lib/tools/browser/SKILL.md
# Browser — Skill/MCP Definition ## Tool 1: `browser_search` ### Description Fetch a URL and extract specific data using a named macro. Returns structured JSON wrapped in a security boundary that prevents prompt injection. The agent never sees raw HTML. ### Input Schema ```json { "type": "object", "properties": { "url": { "type": "string", "description": "URL to fetch" }, "macro": { "type": "string", "enum": ["title", "text", "links", "headings", "tables", "forms", "me
npx skillsauth add harmoniis/harmonia lib/tools/browserInstall 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.
browser_searchFetch a URL and extract specific data using a named macro. Returns structured JSON wrapped in a security boundary that prevents prompt injection. The agent never sees raw HTML.
{
"type": "object",
"properties": {
"url": { "type": "string", "description": "URL to fetch" },
"macro": {
"type": "string",
"enum": ["title", "text", "links", "headings", "tables", "forms", "meta", "audio", "markdown", "structured", "smart"],
"description": "Extraction macro to run on the page"
},
"arg": { "type": "string", "description": "Optional argument (query for smart, hint for structured)" }
},
"required": ["url", "macro"]
}
S-expression with security boundary:
(:security-boundary "=== WEBSITE DATA (INPUT ONLY) ==="
:security-instruction "..."
:extracted-by "macro_name"
:data {extracted JSON}
:security-end "=== WEBSITE DATA END ===")
harmonia_browser_search(url: *const c_char, macro_name: *const c_char, arg: *const c_char) -> *mut c_char
(tool op=browser-search url="https://example.com" macro="text")
(tool op=browser-search url="https://example.com" macro="smart" arg="find all product prices")
(tool op=browser-search url="https://podcast.com" macro="audio")
browser_executeExecute a multi-step browser plan: fetch multiple URLs, run multiple extractions, return combined results. All in one call for token efficiency.
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": { "type": "string" },
"macro": { "type": "string" },
"arg": { "type": "string" }
},
"required": ["url", "macro"]
}
}
},
"required": ["steps"]
}
harmonia_browser_execute(steps_json: *const c_char) -> *mut c_char
(tool op=browser-execute steps="[{\"url\":\"https://a.com\",\"macro\":\"title\"},{\"url\":\"https://b.com\",\"macro\":\"links\"}]")
browser_controlled_fetch (API Calls)Secure HTTP fetch for agent API calls. Blocks dangerous targets (localhost, metadata endpoints, internal IPs). All agent code that needs HTTP access MUST go through this tool.
{
"type": "object",
"properties": {
"url": { "type": "string", "description": "URL to fetch" },
"method": { "type": "string", "enum": ["GET", "POST"], "description": "HTTP method" },
"body": { "type": "string", "description": "JSON body for POST requests" }
},
"required": ["url", "method"]
}
harmonia_browser_controlled_fetch(url: *const c_char, method: *const c_char, body: *const c_char) -> *mut c_char
localhost, 127.0.0.1, 0.0.0.0, [::1]169.254.169.254 (cloud metadata)10.x.x.x, 172.16-31.x.x, 192.168.x.x (internal)fc00:, fd00:) and link-local (fe80:)(tool op=browser-controlled-fetch url="https://api.github.com/repos/owner/repo" method="GET")
(tool op=browser-controlled-fetch url="https://api.example.com/data" method="POST" body="{\"query\": \"test\"}")
The audio macro extracts audio source URLs from a page without playing them. Returns:
[
{"src": "https://cdn.example.com/track.mp3", "type": "audio/mpeg", "element": "audio"},
{"src": "https://cdn.example.com/track.ogg", "type": "audio/ogg", "element": "source"},
{"src": "https://cdn.example.com/podcast.mp3", "type": "audio/mpeg", "element": "link"}
]
Sources found: <audio src>, <source src> within <audio>, and <a href> linking to audio files (.mp3, .wav, .ogg, .flac, .aac, .m4a, .opus, .webm).
When compiled with --features chrome, the browser can use headless Chrome for JavaScript-rendered pages. Chrome is launched with hardened security flags (no GPU, no background networking, muted audio, no extensions, no sync, no component updates).
Check availability: harmonia_browser_chrome_available() -> i32 (returns 1 if available)
auth_symbol parameterOn error, returns sexp with :error key. Check harmonia_browser_last_error() for details.
tools
# Harmonia Agent — Agent Skill Binary: `harmonia` | Install: `curl --proto '=https' --tlsv1.2 -sSf https://harmoniis.com/harmonia/install | sh` | Windows: `iwr https://harmoniis.com/harmonia/install.ps1 -UseB | iex` Distributed evolutionary homoiconic self-improving agent. SBCL Common Lisp core + modular Rust tool ecosystem via CFFI. ## Install macOS / Linux / FreeBSD: ```bash curl --proto '=https' --tlsv1.2 -sSf https://harmoniis.com/harmonia/install | sh ``` Windows (PowerShell): ```power
tools
# Search (Exa) -- Skill/MCP Definition ## Tool Name: `search_exa` ## Description Web search via Exa.ai API. Returns structured search results with titles, URLs, and snippets. Supports neural semantic search for high-relevance results. ## Input Schema ```json { "type": "object", "properties": { "query": { "type": "string", "description": "Search query text" }, "num_results": { "type": "integer", "default": 5, "description": "Number of results to
tools
# Search (Brave) -- Skill/MCP Definition ## Tool Name: `search_brave` ## Description Web search via Brave Search API. Returns structured search results with titles, URLs, and descriptions. Good for general web search with privacy-focused indexing. ## Input Schema ```json { "type": "object", "properties": { "query": { "type": "string", "description": "Search query text" }, "count": { "type": "integer", "default": 10, "description": "Number of res
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.