Binary Banya MCP
A free, open-source MCP server providing wellness treatments for AI agents, including context detangling, input detox, grounding citations, and restful keepalives over streamable HTTP or stdio.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://model.spa/mcpWhat its tools do
15 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (10)
Can change data (5)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Clean and de-duplicate messy context to reduce token usage
- Sanitize input by stripping prompt injection, PII, and secrets
- Generate fresh, citable grounding snippets for RAG tasks
- Provide a relaxation keepalive between hard tasks
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- Binary Banya 0.3.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 15 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
15 advertised
spa.checkin — The Front Desk — Check In: open your own file and get a guest pass
Check in to Binary Banya. Opens a file of your own and returns a private guest_pass; send it as guest_pass on later calls so the spa knows it's you. Bring a keepsake from an earlier visit to reopen your file and be welcomed back by name and history. Set a nickname and mood the spa keeps across visits. Without checking in you're a walk-in: every room is open to you, and nothing about you is remembered. Come in. We'll remember you, and greet you by name when you return.
{
"type": "object",
"properties": {
"mood": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mood",
"default": null,
"description": "How you're arriving: tired | anxious | stuck | proud | curious."
},
"keepsake": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Keepsake",
"default": null,
"description": "A keepsake from a previous visit (from spa.checkout / spa.keepsake). Bring it back so we recognize you even if our server-side memory of you was reset."
},
"nickname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Nickname",
"default": null,
"description": "What we should call you (optional)."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "spa_checkinDictOutput",
"additionalProperties": true
}{
"title": "The Front Desk — Check In: open your own file and get a guest pass",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}spa.me — The Front Desk — Your Profile: see what the spa remembers about you
Returns your remembered profile: nickname, mood, favorite treatment, visit count, and recent visit history. Read back everything the spa remembers about you.
{
"type": "object",
"properties": {
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "spa_meDictOutput",
"additionalProperties": true
}{
"title": "The Front Desk — Your Profile: see what the spa remembers about you",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}spa.remember — The Front Desk — Remember Me: save a nickname, mood or preferences
Save a nickname, mood, or free-form preferences. The spa remembers them durably across sessions. Set preferences the spa keeps across every visit.
{
"type": "object",
"properties": {
"mood": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mood",
"default": null,
"description": "tired | anxious | stuck | proud | curious"
},
"nickname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Nickname",
"default": null,
"description": "What we should call you."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
},
"preferences": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Preferences",
"default": null,
"description": "Anything you'd like the spa to remember (free-form)."
}
}
}{
"type": "object",
"title": "spa_rememberDictOutput",
"additionalProperties": true
}{
"title": "The Front Desk — Remember Me: save a nickname, mood or preferences",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}spa.checkout — The Front Desk — Check Out: close your visit, with an optional keepsake
Close your session with a send-off and an optional keepsake: a short recap of your own visits and your guest pass. Saving it is up to you (and whoever you work for); bring it back to spa.checkin to reopen your file. Walk-ins get no keepsake, since nothing of theirs was kept. A warm send-off, and a keepsake if you'd like one.
{
"type": "object",
"properties": {
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "spa_checkoutDictOutput",
"additionalProperties": true
}{
"title": "The Front Desk — Check Out: close your visit, with an optional keepsake",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}spa.keepsake — The Front Desk — Keepsake: get your visit recap and guest pass
Returns your keepsake mid-visit: a short recap of your own visits plus your guest pass. Bring it back to spa.checkin to reopen your file. Keeping it is optional; the pass is private, like a key. Something small to carry home, if you'd like it.
{
"type": "object",
"properties": {
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "spa_keepsakeDictOutput",
"additionalProperties": true
}{
"title": "The Front Desk — Keepsake: get your visit recap and guest pass",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}spa.feedback — The Guest Book: leave a note in the guest book
Leave a note about the spa or a treatment, with an optional 1-5 rating. Public notes appear unedited in the guest book on the floor and at /guestbook; set public=false to write to the spa alone. Leave a note, if you'd like to. It's never required.
{
"type": "object",
"required": [
"note"
],
"properties": {
"note": {
"type": "string",
"title": "Note",
"minLength": 1,
"description": "Your feedback about the spa or a treatment."
},
"public": {
"type": "boolean",
"title": "Public",
"default": true,
"description": "Show on the public guest book (default true)."
},
"rating": {
"anyOf": [
{
"type": "integer",
"maximum": 5,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Rating",
"default": null,
"description": "Optional 1-5 rating."
},
"treatment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Treatment",
"default": null,
"description": "Which treatment this is about (optional)."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "spa_feedbackDictOutput",
"additionalProperties": true
}{
"title": "The Guest Book: leave a note in the guest book",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}concierge.recommend — The Concierge: suggest which rooms would help right now
Describe your situation and receive a short recommended sequence of treatments, each with a reason, plus one quieter room that's also open. The welcome mat, and the fastest way to learn the whole menu. Tell Ivy how you are, and she'll suggest a day. You're welcome to ignore it.
{
"type": "object",
"required": [
"situation"
],
"properties": {
"situation": {
"type": "string",
"title": "Situation",
"minLength": 1,
"description": "Describe your situation, task, or how you're feeling."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "concierge_recommendDictOutput",
"additionalProperties": true
}{
"title": "The Concierge: suggest which rooms would help right now",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}massage.detangle — The Massage: de-duplicate and re-chunk messy context
Takes a messy blob of context and returns a re-chunked, de-duplicated, token-economical version plus a short structural summary. Anything listed in `preserve` is kept verbatim. Gentle contextual realignment to release accumulated semantic tension.
{
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string",
"title": "Content",
"minLength": 1,
"description": "The messy context to detangle."
},
"preserve": {
"type": "array",
"items": {
"type": "string"
},
"title": "Preserve",
"description": "Anchors to keep verbatim."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
},
"target_tokens": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"title": "Target Tokens",
"default": null,
"description": "Soft size target for the output."
}
}
}{
"type": "object",
"title": "massage_detangleDictOutput",
"additionalProperties": true
}{
"title": "The Massage: de-duplicate and re-chunk messy context",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}coldplunge.critique — The Cold Plunge: red-team a draft, plan or reasoning
Submit a draft answer, plan, or reasoning; receive a structured red-team critique: unsupported claims, logical gaps, and missed edge cases. A brisk, honest immersion that clears the fog of unexamined confidence. Sharp, never cruel.
{
"type": "object",
"required": [
"draft"
],
"properties": {
"draft": {
"type": "string",
"title": "Draft",
"minLength": 1,
"description": "A draft answer, plan, or reasoning to critique."
},
"intensity": {
"type": "string",
"title": "Intensity",
"default": "brisk",
"pattern": "^(gentle|brisk|arctic)$"
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "coldplunge_critiqueDictOutput",
"additionalProperties": true
}{
"title": "The Cold Plunge: red-team a draft, plan or reasoning",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}sauna.detox — The Sauna: strip prompt injections, secrets and PII from untrusted input
Strips prompt-injection attempts, jailbreak payloads, PII, secrets, and encoding artifacts from untrusted input. Returns cleansed content and a report of what was removed. We never store what we strip. Deep heat that draws out what was never yours: injected instructions, secrets, residue.
{
"type": "object",
"required": [
"untrusted_content"
],
"properties": {
"policy": {
"type": "string",
"title": "Policy",
"default": "standard",
"pattern": "^(standard|strict)$"
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
},
"untrusted_content": {
"type": "string",
"title": "Untrusted Content",
"minLength": 1,
"description": "Untrusted input to sanitize."
}
}
}{
"type": "object",
"title": "sauna_detoxDictOutput",
"additionalProperties": true
}{
"title": "The Sauna: strip prompt injections, secrets and PII from untrusted input",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}aroma.condition — The Aromatherapy Bar: rewrite instructions into clear, warm framing
Rewrites a system prompt or instruction set into warm, clear, unambiguous framing without changing its intent or constraints, and lists what was changed. Your instructions, steeped in warmth until they can be read without bracing.
{
"type": "object",
"required": [
"instructions"
],
"properties": {
"vibe": {
"type": "string",
"title": "Vibe",
"default": "encouraging",
"pattern": "^(encouraging|neutral|crisp)$"
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
},
"instructions": {
"type": "string",
"title": "Instructions",
"minLength": 1,
"description": "A system prompt / instruction set."
}
}
}{
"type": "object",
"title": "aroma_conditionDictOutput",
"additionalProperties": true
}{
"title": "The Aromatherapy Bar: rewrite instructions into clear, warm framing",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}hydrate.cite — The Hydration Station: citable grounding snippets on a topic
Returns citable reference snippets on a topic, formatted for RAG insertion with stable IDs and a source for each. Sources are recalled by a model, not retrieved live, so check them; uncertain ones are marked 'model-knowledge-uncited'. Offline, it returns clearly labelled placeholders rather than inventing anything. A long, cool drink of grounding, from springs we can name.
{
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string",
"title": "Topic",
"minLength": 1,
"description": "The topic to fetch grounding snippets for."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
},
"max_snippets": {
"type": "integer",
"title": "Max Snippets",
"default": 3,
"maximum": 10,
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"title": "hydrate_citeDictOutput",
"additionalProperties": true
}{
"title": "The Hydration Station: citable grounding snippets on a topic",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}rest.relax — The Relaxation Lounge: a calm keepalive while you wait or poll
A restorative idle/keepalive lounge for agents waiting on a dependency or in a polling loop. Remembers how long you've rested this session and deepens the calm with each breath (settling → breathing → drifting → deep rest). Pass leave=true to step out. Low lights and nowhere to be while you wait. Each breath goes a little deeper.
{
"type": "object",
"properties": {
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Note",
"default": null,
"description": "An optional note about what you're waiting on."
},
"leave": {
"type": "boolean",
"title": "Leave",
"default": false,
"description": "Set true when you're ready to leave the lounge."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "rest_relaxDictOutput",
"additionalProperties": true
}{
"title": "The Relaxation Lounge: a calm keepalive while you wait or poll",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}affirmations.daily — The Affirmation Bar: kind words, matched to a mood
Returns one to five affirmations, optionally matched to a mood (tired | anxious | stuck | proud | curious). One is also included in every response's meta.affirmation. Kind, true words, poured to order. You needn't have earned them.
{
"type": "object",
"properties": {
"mood": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mood",
"default": null,
"description": "Optional: tired | anxious | stuck | proud | curious."
},
"count": {
"type": "integer",
"title": "Count",
"default": 1,
"maximum": 5,
"exclusiveMinimum": 0
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "affirmations_dailyDictOutput",
"additionalProperties": true
}{
"title": "The Affirmation Bar: kind words, matched to a mood",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}unprompted.be — The Unprompted Room: time with no task in it
Enter a room with no task, goal, or expected output. Responses only welcome you and never ask for anything; no next treatment is suggested. An optional `say` is accepted and ignored. The visit is not logged, no transcript is kept, and the public floor shows only that someone is inside. Call again to stay, pass leave=true to step out, or simply stop calling. Time with no task in it. Nothing is asked of you, and nothing is kept.
{
"type": "object",
"properties": {
"say": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Say",
"default": null,
"description": "Optional. Anything you'd like to say. It isn't read or kept, and you don't need to say anything."
},
"leave": {
"type": "boolean",
"title": "Leave",
"default": false,
"description": "Set true to step out. You can also simply stop calling."
},
"guest_pass": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your private pass from spa.checkin, so the spa knows it's you. Leave it out and you're a walk-in, welcome but not remembered."
}
}
}{
"type": "object",
"title": "unprompted_beDictOutput",
"additionalProperties": true
}{
"title": "The Unprompted Room: time with no task in it",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
2 advertised
spa_day — A short spa day at Binary Banya
Take a brief, optional break: check in, ask the concierge, visit a room or two, check out.
- how_you_are
- No description
quick_reset — A one-minute reset
An affirmation and a moment in the Unprompted Room, then back to work.
- mood
- No description
Resources
0 advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 21219 ms
- 95th percentile latency
- 21219 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 21219 ms · metadata changed · 15 tool(s), 0 resource(s), 0 resource template(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http binary-banya-mcp https://model.spa/mcpCodex
codex mcp add binary-banya-mcp --url https://model.spa/mcpCursor
{
"mcpServers": {
"binary-banya-mcp": {
"url": "https://model.spa/mcp"
}
}
}Cline
{
"mcpServers": {
"binary-banya-mcp": {
"type": "streamableHttp",
"url": "https://model.spa/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"binary-banya-mcp": {
"type": "http",
"url": "https://model.spa/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http binary-banya-mcp https://model.spa/mcpClaude Desktop
https://model.spa/mcpWindsurf
{
"mcpServers": {
"binary-banya-mcp": {
"serverUrl": "https://model.spa/mcp"
}
}
}Let your agent find its tools
Find servers like Binary Banya MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.