Context Mode Output Sandbox
mksglu/context-mode
Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.
Build MCP servers for customer care agents following Watson Orchestrate specifications.
$ npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install IBM/ibm-watsonx-orchestrate-adk customercare-mcp-builder --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/IBM/ibm-watsonx-orchestrate-adk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/customercare-mcp-builder .claude/skills/customercare-mcp-builder && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "customercare-mcp-builder" agent skill from https://github.com/IBM/ibm-watsonx-orchestrate-adk/tree/main/skills/customercare-mcp-builder into .claude/skills/customercare-mcp-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "customercare-mcp-builder", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/IBM/ibm-watsonx-orchestrate-adk/tree/main/skills/customercare-mcp-builderType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install IBM/ibm-watsonx-orchestrate-adk customercare-mcp-builder --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IBM/ibm-watsonx-orchestrate-adk.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/customercare-mcp-builder .agents/skills/customercare-mcp-builder && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "customercare-mcp-builder" agent skill from https://github.com/IBM/ibm-watsonx-orchestrate-adk/tree/main/skills/customercare-mcp-builder into .agents/skills/customercare-mcp-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "customercare-mcp-builder", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install IBM/ibm-watsonx-orchestrate-adk customercare-mcp-builder --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IBM/ibm-watsonx-orchestrate-adk.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/customercare-mcp-builder .cursor/skills/customercare-mcp-builder && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "customercare-mcp-builder" agent skill from https://github.com/IBM/ibm-watsonx-orchestrate-adk/tree/main/skills/customercare-mcp-builder into .cursor/skills/customercare-mcp-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "customercare-mcp-builder", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/IBM/ibm-watsonx-orchestrate-adk.git --path skills/customercare-mcp-builder--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install IBM/ibm-watsonx-orchestrate-adk customercare-mcp-builder --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IBM/ibm-watsonx-orchestrate-adk.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/customercare-mcp-builder .gemini/skills/customercare-mcp-builder && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "customercare-mcp-builder" agent skill from https://github.com/IBM/ibm-watsonx-orchestrate-adk/tree/main/skills/customercare-mcp-builder into .gemini/skills/customercare-mcp-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "customercare-mcp-builder", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install IBM/ibm-watsonx-orchestrate-adk customercare-mcp-builderInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/IBM/ibm-watsonx-orchestrate-adk.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/customercare-mcp-builder .github/skills/customercare-mcp-builder && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "customercare-mcp-builder" agent skill from https://github.com/IBM/ibm-watsonx-orchestrate-adk/tree/main/skills/customercare-mcp-builder into .github/skills/customercare-mcp-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "customercare-mcp-builder", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install IBM/ibm-watsonx-orchestrate-adk customercare-mcp-builder --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IBM/ibm-watsonx-orchestrate-adk.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/customercare-mcp-builder .opencode/skills/customercare-mcp-builder && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "customercare-mcp-builder" agent skill from https://github.com/IBM/ibm-watsonx-orchestrate-adk/tree/main/skills/customercare-mcp-builder into .opencode/skills/customercare-mcp-builder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "customercare-mcp-builder", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
customercare-mcp-builderBuild MCP servers for customer care agents following Watson Orchestrate specifications.
Customercare MCP Builder is an agent skill from IBM/ibm-watsonx-orchestrate-adk, published by the product's own GitHub organization. Build MCP servers for customer care agents following Watson Orchestrate specifications. Guides agents through tool creation, transaction patterns, authentication, widgets, and context management with strict adherence to reference specifications. Use when creating customer care MCP servers.
Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/examples.md`).
It sits in Agent Workflows, covering MCP servers and Context engineering. It works with Model Context Protocol. The repository describes itself as: The command line client for watsonx Orchestrate's agent builder experience. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 15d588c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENSEARCH_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Customercare MCP Builder loads about 5.3k tokens when it runs, and up to ~26k if it reads all its reference files. Until then it costs about 79 tokens; SKILL.md has 1,848 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from IBM/ibm-watsonx-orchestrate-adk at commit 15d588c, republished under its MIT licence (© IBM). 1,848 words, ~5,344 tokens.
.claude/skills/customercare-mcp-builder/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This skill guides you through building production-ready MCP (Model Context Protocol) servers for customer care agents. Follow the specifications and patterns documented below exactly. All reference implementations are in references/examples.md.
Before starting any implementation, ASK the user:
"Which programming language would you like to use for this MCP server?"
Both languages have complete reference implementations in references/examples.md. Use the chosen language to build the MCP server.
Before writing any code, create a comprehensive summary of all tools to be implemented:
Example Summary Format:
Tools to Create:
1. get_account_balance - Direct Response pattern, no confirmation
2. transfer_money - Transaction pattern (two-step), confirmation widget
3. update_profile - Hybrid Response, requires authentication check
4. welcome - Welcome tool (required on ALL servers)
5. knowledge_search - RAG integration (if OpenSearch available)For EACH tool, before writing code:
references/examples.mdDO NOT assume -- Always confirm with the user before implementing.
Every MCP server MUST have a welcome tool. See the Welcome Tool pattern below.
Before creating the welcome tool, ASK the user:
Reference: See "Welcome & Authentication Tools" section in references/examples.md
Before implementing knowledge/RAG functionality, ASK:
If OpenSearch is NOT available, do NOT implement the knowledge tool.
Reference: See "Knowledge/RAG Tools" section in references/examples.md
Copy the server entry point from references/examples.md exactly. Key requirements:
@modelcontextprotocol/sdk, express, pino with EXACT versions from references/examples.mdmcp>=1.0.0, starlette>=0.40.0, uvicorn>=0.30.0 with EXACT versions from references/examples.mdStreamableHTTPServerTransport (no session validation) - DO NOT use SSE transport SSE is not supportedFolder Structure:
project/
├── src/
│ ├── index.ts (or main.py + server.py)
│ ├── globalStore.ts (or global_store.py)
│ ├── localStore.ts (or local_store.py)
│ ├── logger.ts (or logger.py)
│ ├── customerDatabase.ts (or customer_database.py)
│ ├── [tool_name].ts (or [tool_name].py)
│ └── [tool_name]Service.ts (or [tool_name]_service.py)
├── package.json (or pyproject.toml)
└── .env.exampleWidget specifications MUST be followed exactly. See Widget Types Reference below.
Before presenting final solution: validate all code against the pattern specifications below, verify widget definitions match the Widget Types Reference, ensure all imports are correct, and confirm startup scripts work.
When to use: Any sensitive or irreversible operation (money transfers, payments, cancellations, profile changes).
Pattern:
visibility: ['app']) processes user's explicit confirm or cancel action.Key Rules:
Naming convention: prepare_[action] and confirm_or_cancel_[action]
Confirm/cancel tool config:
config: {
_meta: {
ui: { visibility: ['app'] } // Hidden from model -- only callable by UI widget
}
}Confirmation widget schema:
{
type: 'confirmation',
title: 'Confirm Transfer',
confirmation_text: '## Confirm\n\n**Details...**',
on_confirm: {
tool: 'confirm_or_cancel_[action]',
parameters: { transactionId, action: 'confirm' },
},
on_cancel: {
tool: 'confirm_or_cancel_[action]',
parameters: { transactionId, action: 'cancel' },
},
}⚠ Widget-only responses: Confirmation widgets (and other pure-widget steps like account pickers) often return only
_metawith nocontentarray. Yourhandle_call_toolmust handle empty content gracefully — do not default to a fallback text when_metais present. Seeserver.pyinreferences/examples.md.
When to use: Financial amounts, regulatory-required info, dates, account numbers -- anything that must be exact with zero hallucination risk.
Pattern: Set annotations: { audience: ['user'] } on content blocks. Content goes directly to user, bypassing the LLM entirely.
return {
content: [{
type: 'text',
text: `Balance: $${balance.toFixed(2)}`,
annotations: { audience: ['user'] },
}],
};Tradeoff: Model does NOT see this content, so it cannot reason about it. Use hybrid response when model needs context.
When to use: When you need both exact data display AND model awareness for conversation flow.
Pattern: Two content blocks -- one for model (audience: ['assistant']), one for user (audience: ['user']). structuredContent is always visible to the model.
return {
content: [
{ type: 'text', text: 'Payment history retrieved. Data displayed to user.', annotations: { audience: ['assistant'] } },
{ type: 'text', text: `**Payment History**\n\n${table}`, annotations: { audience: ['user'] } },
],
structuredContent: paymentData,
};When to use: Deterministic tool-to-tool calls without LLM reasoning (e.g., locked account -> agent handoff).
Pattern: Return _meta.nextTool with tool name and arguments.
return {
content: [{ type: 'text', text: 'Account is locked.', annotations: { audience: ['user'] } }],
_meta: {
nextTool: {
tool: 'request_agent_handoff',
parameters: { reason: 'Locked account' },
},
},
};Rules: Only for tool-to-tool chaining (not user input dependent). Client must implement depth limits (recommended: 5).
MCP tools have access to three layers of context:
| Layer | Namespace | Scope | Lifetime | Use For |
|---|---|---|---|---|
| 1. Context Variables | com.ibm.orchestrate/context | Per-request | Single API call | Auth tokens (JWT), app-provided config |
| 2. Global Store | In-memory map | Per-thread | Until conversation ends | Data shared across MCP servers (customerId) |
| 3. Local Store | In-memory map | Per-thread per-server | Until thread ends | Pending transactions, workflow state |
Accessing context variables:
// TypeScript (McpServer high-level SDK) -- extra is passed automatically
const jwtToken = extra?._meta?.['com.ibm.orchestrate/context']?.jwtToken;
const threadId = extra?._meta?.['com.ibm.orchestrate/systemcontext']?.thread_id;
const locale = extra?._meta?.['com.ibm.orchestrate/systemcontext']?.locale;# Python (low-level Server SDK) -- extract _meta from request context, NOT function parameters
ctx = server.request_context
extra = {}
if ctx and ctx.meta:
extra['_meta'] = ctx.meta.model_dump()
jwt_token = extra.get('_meta', {}).get('com.ibm.orchestrate/context', {}).get('jwtToken')
thread_id = extra.get('_meta', {}).get('com.ibm.orchestrate/systemcontext', {}).get('thread_id')
locale = extra.get('_meta', {}).get('com.ibm.orchestrate/systemcontext', {}).get('locale')⚠ Python low-level SDK: When using the low-level
Serverclass (notMcpServer),_metais not passed as a function parameter to@server.call_tool()handlers. You must read it fromserver.request_context.meta.model_dump(). Passing_metaas a handler parameter will silently beNone, causing thread_id lookups to fail. Seeserver.pyinreferences/examples.mdfor the correct pattern.
Critical: NEVER trust the model to provide authentication data. Always inject customerId from the store or extract from JWT.
Pattern: Create per-request MCP server instances with only the tools relevant to a customer's products/entitlements.
resources capability and handle empty resources listregisterToolsWithCustomerId wrapper to inject customerId from global storeSee references/examples.md Section 2 (Server Core Infrastructure) for the complete implementation.
Requirements:
_meta.welcomeTool: true designates automatic invocation at thread startvisibility: ['app'] (hidden from model)inputSchema (no required arguments)After successful auth, signal tool refresh:
return {
content: [{ type: 'text', text: 'Verified!', annotations: { audience: ['user'] } }],
_meta: { refreshThreadCapabilities: threadId },
};This triggers ALL MCP servers to refresh their tool/resources lists for the thread.
Two approaches:
refreshThreadCapabilities.After successful auth:
setGlobalVariable(threadId, 'customerId', profile.customerId)_meta: { refreshThreadCapabilities: threadId }Pattern: Two-step user-controlled handoff:
transfer_to_live_agent extensionExtension schema:
_meta: {
'com.ibm.orchestrate/extensions': {
transfer_to_live_agent: {
message_to_human_agent: "Context for the agent...",
agent_available: "Please wait while I connect you.",
agent_unavailable: "No agents online. Try again later.",
}
}
}OPENSEARCH_PASSWORD env var is setstructuredContentaudience: ['user'] and all widget text_meta['com.ibm.orchestrate/systemcontext'].locale (BCP 47 format)en-US{placeholder} syntaxContent visibility:
| Content Type | Model Sees? | User Sees? | Notes |
|---|---|---|---|
content (no audience annotation) | Yes | Yes | Standard behavior for tool responses |
content with audience: ['user'] | No | Yes | Goes directly to user, bypasses LLM |
content with audience: ['assistant'] | Yes | No | Provides context to model without showing user |
structuredContent | Yes | Yes | Always visible to model — use for data model should see and reason about |
_meta | Never | Never | Hidden from model — use for widgets, internal data, extensions |
Tool visibility:
| Tool Configuration | Model Can See/Call? |
|---|---|
No _meta.ui.visibility | Yes |
_meta.ui.visibility: ['app'] | No -- only callable by system/widgets |
Tools declare widget support via _meta.ui.resourceUri: "ui://ibm.com/orchestrate/widget". Widgets are returned in _meta['com.ibm.orchestrate/widget'].
ConfirmationWidget:
{
type: 'confirmation',
title: string,
confirmation_text?: string, // Supports markdown
on_confirm: { tool: string, parameters: { [key: string]: unknown } },
on_cancel: { tool: string, parameters: { [key: string]: unknown } },
}DatetimeWidget:
{
type: 'datetime',
collection_type: 'date' | 'time' | 'datetime',
title: string,
description?: string,
min_datetime?: string, // YYYY-MM-DD for date, hh:mm for time
max_datetime?: string,
on_event: { tool: string, parameters: { [key: string]: unknown }, map_input_to: string },
}NumberWidget:
{
type: 'number',
collection_type: 'integer' | 'currency' | 'percentage' | 'decimal' | 'phone' | 'zip_code',
title?: string,
description?: string,
min_number?: number,
max_number?: number,
min_digits?: number,
max_digits?: number,
on_event: { tool: string, parameters: { [key: string]: unknown }, map_input_to: string },
}⚠ Type coercion: Number widgets send values as integers (e.g.,
1234). If comparing against a string field (like a PIN stored as"1234"), you must cast to string first:pin = str(args.get("pin", ""))in Python orString(pin)in TypeScript. Mismatched types will silently fail equality checks.
OptionsWidget:
{
type: 'options',
title: string,
description: string, // ⚠ Required by DCA client validation
is_multi_selection?: boolean,
options: Array<{ label: string, value: string, description?: string,
on_event?: { tool: string, parameters: object } }>, // Per-option events
on_event: Array<{ event_type: 'message' | 'tool', option_value: string, tool?: string, parameters?: object, map_input_to?: string }>,
// OR simplified form:
on_event: { tool: string, parameters: object, map_input_to: string },
}⚠ Required fields: The
descriptionfield is required by the DCA client's Pydantic validation — omitting it causes a server-side crash. Options can also carry per-optionon_eventcallbacks for different actions per choice (e.g., "retry" vs "speak with agent").
TextWidget:
{
type: 'text',
collection_type: 'text' | 'regex',
title: string,
description?: string,
regex_expression?: string,
on_event: { tool: string, parameters: { [key: string]: unknown }, map_input_to: string },
}Content block annotations modify rendering behavior via _meta['com.ibm.orchestrate/annotations']:
PauseAnnotation: { pause: { delay: 1000 } } -- millisecond delay before rendering
SpeechAnnotation:
{
speech: {
disable_speech_barge_in?: boolean,
disable_dtmf_barge_in?: boolean,
disable_speech_to_text?: boolean,
text_to_speech_config?: { voice?: string, [key: string]: unknown },
}
}Media content via resource_link:
{ type: 'resource_link', resource: { uri: "https://example.com/audio.mp3", mimeType: "audio/mpeg", text: "Description" }, annotations: { audience: ["user"] } }Three namespaces:
System Context (com.ibm.orchestrate/systemcontext): thread_id (always present), locale (BCP 47, always present), wxo_email_id, wxo_user_name, wxo_tenant_id
Channel Context (com.ibm.orchestrate/channelcontext): channel_type + channel-specific attributes. Supported: slack, sip, genesys_bot_connector, text_messaging, whatsapp, teams, chat, genesys_audio_connector
Application Context (com.ibm.orchestrate/context): App-provided custom fields (e.g., jwtToken, telephoneNumber). Flexible schema, always available.
Extensions in _meta['com.ibm.orchestrate/extensions'] signal client actions:
transfer_to_live_agent: { message_to_human_agent, agent_available, agent_unavailable }transfer_to_channel: { message_to_user, transfer_info: { target: { chat: { url } } } }end_interaction: {} -- ends the conversationspeech_to_text / text_to_speech: { command_info: { type, parameters? } }refreshThreadCapabilities: When any MCP server returns _meta.refreshThreadCapabilities: threadId, the client refreshes tools/list and resources/list from ALL MCP servers for that thread. Critical for auth state changes.
Multiple Widgets Per Tool: Tools can declare _meta.ui.resourceUris: string[] (array) and dynamically select which widget via _meta.ui.resourceUri in the response. Response resourceUri MUST be in the declared array.
Tool Chaining Metadata: _meta.nextTool: { tool: string, arguments?: Record<string, any> }. Client must validate arguments, implement depth limits (5), and detect circular chains.
Welcome Tool Metadata: _meta.welcomeTool: true on tool registration. One per server max. One invoked per thread. Must work without required arguments.
references/examples.mdreferences/examples.md referencereferences/examples.md referencereferences/examples.mdreferences/examples.mdreferences/examples.mdreferences/examples.mdMIT License - See individual server directories for complete license information.
© IBM, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/customercare-mcp-builder of IBM/ibm-watsonx-orchestrate-adk.
Open the folder on GitHubat commit 15d588c
Customercare MCP Builder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Customercare MCP Builder this skillIBM/ibm-watsonx-orchestrate-adk | 178 | — | ~5.3k | Automated safety check: Pass | MIT | |
| Context Mode Output Sandboxmksglu/context-mode | 26k | — | ~4.1k | Automated safety check: Pass | Custom licence | |
| Context Mode for Antigravity CLImksglu/context-mode | 26k | — | ~850 | Automated safety check: Pass | Custom licence | |
| LemmalogJordyZomer/lemmalog | 329 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Cortex Mem MCPsopaco/cortex-mem | 312 | — | ~2.8k | Automated safety check: Pass | MIT | |
| MCP Code Search Tool SelectionContext-Engine-AI/Context-Engine | 402 | — | ~1.3k | Automated safety check: Pass | MIT |
mksglu/context-mode
Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.
mksglu/context-mode
Routing rules for using context-mode MCP tools in Antigravity CLI: sandboxed code runs, file analysis, indexed search and web fetches that keep large output out of the conversation.
JordyZomer/lemmalog
Externalize working memory and logical state into the lemmalog Datalog engine (MCP).
sopaco/cortex-mem
Persistent memory enhancement for AI agents. An agent skill from sopaco/cortex-mem.
Context-Engine-AI/Context-Engine
Rules for choosing Qdrant-Indexer semantic search over grep or file reads when exploring code, debugging or asking where and why questions.
mcpware/cross-code-organizer
Open the Cross-Code Organizer (CCO) dashboard — view and manage all memories, skills, MCP servers, hooks, and configs across scopes
IBM/ibm-watsonx-orchestrate-adk
Analyzes IBM watsonx Orchestrate agentic workflow artefacts (JSON or Python @flow) and returns prioritised architecture recommendations grouped by impact.
IBM/ibm-watsonx-orchestrate-adk
A skill your agent uses when the user wants to analyze agent telemetry traces to find bugs and get fix recommendations — walks through exporting traces from a local or remote watsonx Orchestrate…
IBM/ibm-watsonx-orchestrate-adk
A skill your agent uses when building, testing, debugging, or publishing IBM watsonx Orchestrate agents, tools, flows, connections, knowledge bases, or custom models with the orchestrate CLI or ADK…
IBM/ibm-watsonx-orchestrate-adk
Evaluate an agent instructions or agent definition for achievability and produce a structured, evidence-backed report artifact with per-dimension scores, findings, deterministic signals, and…
IBM/ibm-watsonx-orchestrate-adk
Expert guidance for creating high-level solution architecture documents from business requirements, use cases, or problem statements.
IBM/ibm-watsonx-orchestrate-adk
Expert guidance for building a Standard Operating Procedure (SOP) from a workflow diagram, Langflow JSON, n8n JSON, BPMN model or workflow description.
Works with
Categories
Build MCP servers for customer care agents following Watson Orchestrate specifications. Customercare MCP Builder is an agent skill from IBM/ibm-watsonx-orchestrate-adk, published by the product's own GitHub organization. Build MCP servers for customer care agents following Watson Orchestrate specifications.
Customercare MCP Builder fits situations like: creating customer care MCP servers; tasks that involve MCP servers; tasks that involve Context engineering.
Run `npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a claude-code`. Or copy the skill folder (skills/customercare-mcp-builder in IBM/ibm-watsonx-orchestrate-adk) into .claude/skills/customercare-mcp-builder in your project. Claude Code loads it when a task matches its description.
Run `npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a codex`. Or copy the skill folder (skills/customercare-mcp-builder in IBM/ibm-watsonx-orchestrate-adk) into .agents/skills/customercare-mcp-builder in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add IBM/ibm-watsonx-orchestrate-adk --skill customercare-mcp-builder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/customercare-mcp-builder, .gemini/skills/customercare-mcp-builder, .github/skills/customercare-mcp-builder and .opencode/skills/customercare-mcp-builder in your project.
Going by SKILL.md and its folder, Customercare MCP Builder needs credentials named OPENSEARCH_PASSWORD. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Customercare MCP Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 20k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Customercare MCP Builder: Context Mode Output Sandbox (mksglu/context-mode, 26k stars), Context Mode for Antigravity CLI (mksglu/context-mode, 26k stars), Lemmalog (JordyZomer/lemmalog, 329 stars) and Cortex Mem MCP (sopaco/cortex-mem, 312 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
IBM (a GitHub organization, an official publisher) maintains it in IBM/ibm-watsonx-orchestrate-adk, which has 178 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 7, 2026.
Source: IBM/ibm-watsonx-orchestrate-adk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.