hermes-backup/daily/2026-04-28_203212/skills/devops/arifos-fastmcp-app-tool-debug/SKILL.md
Debug why FastMCPApp tools don't appear in tools/list — visibility=["app"] filter in FastMCP 3.2.0
npx skillsauth add ariffazil/openclaw-workspace arifos-fastmcp-app-tool-debugInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
add_provider(fastmcp_app) succeeds silently, provider shows in mcp.providers, but mcp.list_tools() returns zero tools from that provider.
FastMCP 3.2.0 server.py:185 — _is_model_visible() filters out any tool whose meta.ui.visibility == ["app"].
FastMCPApp registers all its tools with visibility=["app"] so they appear in app UIs but are stripped from MCP tools/list responses to clients.
def _is_model_visible(tool: Tool) -> bool:
visibility = tool.meta.get("ui", {}).get("visibility", [])
if not isinstance(visibility, list):
return True
return "model" in visibility # ["app"] → returns False
mcp.list_tools() — count tools from the appmcp.providers — confirm app is registeredfastmcp/server/server.py:185 — check _is_model_visible()await fastmcp_app_instance.list_tools() directly — if it returns tools, the issue IS visibility filteringDo NOT use add_provider() for tools that must be visible to MCP clients. Instead wire them directly:
from arifosmcp.apps.command_center.some_app import some_handler
def _cc_tool_wrapper(*args, **kwargs) -> dict:
return some_handler(*args, **kwargs)
mcp.tool(name="tool_name")(_cc_tool_wrapper)
command_center FastMCPApp has 7 dashboard tools (session_status, ops_vitals, judge_action, etc.)add_provider(command_center_app) silently produced 0 visible toolsmcp server using mcp.tool(name="...")(handler_func)import asyncio
from arifosmcp.server import mcp
async def check():
tools = await mcp.list_tools()
print(f'Total: {len(tools)}') # should be 20 (13 canonical + 7 CC)
asyncio.run(check())
arifosmcp/server.py — _is_model_visible() filter at line ~185arifosmcp/apps/command_center/app.py — FastMCPApp with 7 toolsfastmcp/server/providers/aggregate.py — AggregateProvider._list_tools() aggregates from all providersdevelopment
Governed intelligence skill for AAA as the abstraction, attestation, and abduction control plane across arifOS, APEX, A-FORGE, GEOX, WEALTH, WELL, and the ariffazil profile repository. Use when the user asks to explain or design AAA, route agentic work, reduce chaos/entropy in an arifOS federation task, create AREP/task declarations, classify risk, plan multi-repo changes, review governance boundaries, or translate human intent into evidence-backed, authority-safe, recursively agentic workflows. Provides deterministic F1-F13 floor checking, bounded abduction, and FederationReceipt composition.
development
Check every skill’s “use when” and “do not use when” clauses for collisions, missing negatives, and vague verbs like “help,” “assist,” or “improve.” Load when linting, reviewing, or validating trigger boundaries.
development
Bootstrap, design, and package new skills. Load when capturing user intent for a new skill or drafting its initial instruction framework.
content-media
Diagnose which federation services are up, down, or drifting. Produce a prioritized remediation plan.