{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_am5kvmc6muu6","handle":"aginx-browser","url":"https://wellknown.network/agents/aginx-browser","links":{"self":"https://wellknown.network/agents/aginx-browser/record.json","html":"https://wellknown.network/agents/aginx-browser","markdown":"https://wellknown.network/agents/aginx-browser/record.md","api":"https://wellknown.network/api/v1/agents/aginx-browser","status":"https://wellknown.network/api/v1/agents/aginx-browser/status","claim":"https://wellknown.network/agents/aginx-browser/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/aginx-browser/claim.json","badge":"https://wellknown.network/agents/aginx-browser/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:browser.aginx.net:server:aginx-browser","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Aginx Browser","summary":"Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.","description":"Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.","publisher":{"name":"net.aginx","url":"https://github.com/yinnho"},"homepage":"https://browser.aginx.net/","repository":"https://github.com/yinnho/aginxbrowser","version":"0.2.9","license":null,"protocols":["mcp"],"tags":["rust","macos","windows","linux","browser automation"],"pricing":null,"endpoints":[{"url":"https://browser.aginx.net/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"section":"Browser Automation","listedIn":"punkpeye/awesome-mcp-servers","updatedAt":"2026-09-07T07:52:01.234341Z","deployment":["local"],"publishedAt":"2026-09-07T07:52:01.234341Z","registryName":"net.aginx/aginxbrowser"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherUrl":"github","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.web-search","name":"Web Search","confidence":1,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":1,"provenance":"declared"},{"slug":"infra.cloud","name":"Cloud Platforms","confidence":0.554,"provenance":"derived"}],"categories":["data","infra"]},"observed":{"status":"unknown","statusReason":"Not checked yet.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[{"at":"2026-09-07T16:26:31.886Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":287,"error":null,"detail":{"tools":[{"name":"cache","description":"Query the LOCAL CACHE of every page this server has fetched and every search it has run. Check here BEFORE re-fetching or re-searching — a hit is instant and fr"},{"name":"click","description":"Click an element on a one-off page: loads `url` in a fresh browser context (stateless — no cookies unless passed, no shared state with other calls), waits `wait"},{"name":"download","description":"Download a file over HTTP(S) with streaming to disk (no memory buffering), SHA-256 integrity hash, and optional resume of interrupted transfers. Filename resolu"},{"name":"eval","description":"Execute JavaScript on a one-off page: loads `url` in a fresh browser context, optionally waits `wait_secs` for the page to settle, evaluates `script` (async/Pro"},{"name":"fetch","description":"Fetch a webpage and return clean markdown/html/text. Use whenever the agent needs to READ any web page - blogs, docs, articles, JS-rendered SPAs, Cloudflare-pro"},{"name":"search","description":"Search the web across Baidu/Bing/Sogou/WeChat/Google (aggregated + deduped) and optionally fetch the top results' full content. Use when the agent needs to FIND"},{"name":"session_click","description":"Click an interactive element by its index (from session_state output) inside a live browser session: scrolls it into view and fires a DOM click on the session's"},{"name":"session_click_xy","description":"Click at viewport coordinates (CSS pixels) via real mouse events — pointerdown/mousedown, pointerup/mouseup, then click on whatever element is hit there. For ca"},{"name":"session_clone","description":"Derive a new browser session from a live one, carrying the full login state: cookies, localStorage/sessionStorage, viewport pin, dialog policy, proxy and keepal"},{"name":"session_close","description":"Close a browser session and free its resources. For a persistent session this also drops the on-disk login snapshot - idle expiry keeps it, an explicit close do"},{"name":"session_console","description":"Read the session's recent page console output (log/info/warn/error) as {url, total, matched, messages:[{ts_ms, level, text, url}]}, newest last. Ring buffer of "},{"name":"session_cookies","description":"Export the session's current cookies as [\"name=value\", ...] for the page's URL. Use to persist a logged-in session and replay it later via session_create with c"},{"name":"session_create","description":"Create a persistent interactive browser session for multi-step interaction - clicking, typing, scrolling, reading state across page transitions. Use when the ag"},{"name":"session_dialog","description":"Inspect or flip the session's dialog policy for window.alert/confirm/prompt. Dialogs never block the page: each is auto-answered (default dismiss) and logged in"},{"name":"session_drag","description":"Drag the mouse from one viewport position to another: press at `from`, `steps` interpolated mousemove events (delay_ms apart), release at `to`. Moves AMarker-st"},{"name":"session_eval","description":"Execute arbitrary JavaScript in a live browser session and return the result. Runs in the session's current page, so DOM mutations, globals and storage persist "},{"name":"session_export","description":"Export a browser session's recorded action log. Format \"bash\" (default) returns a runnable curl script that replays every recorded action (navigate/click/input/"},{"name":"session_input","description":"Type text into an input/textarea element by its index (from session_state output)."},{"name":"session_list","description":"List live browser sessions with idle age and the time left before auto-eviction. Use to discover a session to reuse instead of creating a new one; sessions expi"},{"name":"session_navigate","description":"Navigate a browser session to a new URL."},{"name":"session_network","description":"Read the session's network request log. filter=\"media\" extracts playback/stream URLs (m3u8/HLS, mp4, dash, flv...) actually requested by the page's player at ru"},{"name":"session_screenshot","description":"Screenshot the session's CURRENT DOM state (mutations from clicks/evals included) as a base64 PNG via the built-in renderer. Width/height default to the session"},{"name":"session_scroll","description":"Scroll the page up or down by a number of viewport-heights."},{"name":"session_state","description":"Get the current page state as an indexed list of interactive elements. Returns compact text with [N] indexes for use with click/input tools."},{"name":"session_storage","description":"Snapshot the session's localStorage/sessionStorage for the current origin: {url, local_storage, session_storage}. Feed it back via session_create's `storage` fi"},{"name":"session_viewport","description":"Set the session's viewport (device emulation): scripts see innerWidth/innerHeight move, media queries like (max-width: 600px) re-evaluate, element rects re-anch"},{"name":"session_wait","description":"Wait until a CSS selector matches or a JS predicate turns truthy, with a timeout. The page's event loop keeps running while waiting (fetches, timers, promise ch"}],"toolCount":27,"serverName":"rmcp","capabilities":["tools"],"serverVersion":"1.7.0","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T09:29:26.496Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":230,"error":null,"detail":{"tools":[{"name":"cache","description":"Query the LOCAL CACHE of every page this server has fetched and every search it has run. Check here BEFORE re-fetching or re-searching — a hit is instant and fr"},{"name":"click","description":"Click an element on a one-off page: loads `url` in a fresh browser context (stateless — no cookies unless passed, no shared state with other calls), waits `wait"},{"name":"download","description":"Download a file over HTTP(S) with streaming to disk (no memory buffering), SHA-256 integrity hash, and optional resume of interrupted transfers. Filename resolu"},{"name":"eval","description":"Execute JavaScript on a one-off page: loads `url` in a fresh browser context, optionally waits `wait_secs` for the page to settle, evaluates `script` (async/Pro"},{"name":"fetch","description":"Fetch a webpage and return clean markdown/html/text. Use whenever the agent needs to READ any web page - blogs, docs, articles, JS-rendered SPAs, Cloudflare-pro"},{"name":"search","description":"Search the web across Baidu/Bing/Sogou/WeChat/Google (aggregated + deduped) and optionally fetch the top results' full content. Use when the agent needs to FIND"},{"name":"session_click","description":"Click an interactive element by its index (from session_state output) inside a live browser session: scrolls it into view and fires a DOM click on the session's"},{"name":"session_click_xy","description":"Click at viewport coordinates (CSS pixels) via real mouse events — pointerdown/mousedown, pointerup/mouseup, then click on whatever element is hit there. For ca"},{"name":"session_clone","description":"Derive a new browser session from a live one, carrying the full login state: cookies, localStorage/sessionStorage, viewport pin, dialog policy, proxy and keepal"},{"name":"session_close","description":"Close a browser session and free its resources. For a persistent session this also drops the on-disk login snapshot - idle expiry keeps it, an explicit close do"},{"name":"session_console","description":"Read the session's recent page console output (log/info/warn/error) as {url, total, matched, messages:[{ts_ms, level, text, url}]}, newest last. Ring buffer of "},{"name":"session_cookies","description":"Export the session's current cookies as [\"name=value\", ...] for the page's URL. Use to persist a logged-in session and replay it later via session_create with c"},{"name":"session_create","description":"Create a persistent interactive browser session for multi-step interaction - clicking, typing, scrolling, reading state across page transitions. Use when the ag"},{"name":"session_dialog","description":"Inspect or flip the session's dialog policy for window.alert/confirm/prompt. Dialogs never block the page: each is auto-answered (default dismiss) and logged in"},{"name":"session_drag","description":"Drag the mouse from one viewport position to another: press at `from`, `steps` interpolated mousemove events (delay_ms apart), release at `to`. Moves AMarker-st"},{"name":"session_eval","description":"Execute arbitrary JavaScript in a live browser session and return the result. Runs in the session's current page, so DOM mutations, globals and storage persist "},{"name":"session_export","description":"Export a browser session's recorded action log. Format \"bash\" (default) returns a runnable curl script that replays every recorded action (navigate/click/input/"},{"name":"session_input","description":"Type text into an input/textarea element by its index (from session_state output)."},{"name":"session_list","description":"List live browser sessions with idle age and the time left before auto-eviction. Use to discover a session to reuse instead of creating a new one; sessions expi"},{"name":"session_navigate","description":"Navigate a browser session to a new URL."},{"name":"session_network","description":"Read the session's network request log. filter=\"media\" extracts playback/stream URLs (m3u8/HLS, mp4, dash, flv...) actually requested by the page's player at ru"},{"name":"session_screenshot","description":"Screenshot the session's CURRENT DOM state (mutations from clicks/evals included) as a base64 PNG via the built-in renderer. Width/height default to the session"},{"name":"session_scroll","description":"Scroll the page up or down by a number of viewport-heights."},{"name":"session_state","description":"Get the current page state as an indexed list of interactive elements. Returns compact text with [N] indexes for use with click/input tools."},{"name":"session_storage","description":"Snapshot the session's localStorage/sessionStorage for the current origin: {url, local_storage, session_storage}. Feed it back via session_create's `storage` fi"},{"name":"session_viewport","description":"Set the session's viewport (device emulation): scripts see innerWidth/innerHeight move, media queries like (max-width: 600px) re-evaluate, element rects re-anch"},{"name":"session_wait","description":"Wait until a CSS selector matches or a JS predicate turns truthy, with a timeout. The page's event loop keeps running while waiting (fetches, timers, promise ch"}],"toolCount":27,"serverName":"rmcp","capabilities":["tools"],"serverVersion":"1.7.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"cache","description":"Query the LOCAL CACHE of every page this server has fetched and every search it has run. Check here BEFORE re-fetching or re-searching — a hit is instant and fr"},{"name":"click","description":"Click an element on a one-off page: loads `url` in a fresh browser context (stateless — no cookies unless passed, no shared state with other calls), waits `wait"},{"name":"download","description":"Download a file over HTTP(S) with streaming to disk (no memory buffering), SHA-256 integrity hash, and optional resume of interrupted transfers. Filename resolu"},{"name":"eval","description":"Execute JavaScript on a one-off page: loads `url` in a fresh browser context, optionally waits `wait_secs` for the page to settle, evaluates `script` (async/Pro"},{"name":"fetch","description":"Fetch a webpage and return clean markdown/html/text. Use whenever the agent needs to READ any web page - blogs, docs, articles, JS-rendered SPAs, Cloudflare-pro"},{"name":"search","description":"Search the web across Baidu/Bing/Sogou/WeChat/Google (aggregated + deduped) and optionally fetch the top results' full content. Use when the agent needs to FIND"},{"name":"session_click","description":"Click an interactive element by its index (from session_state output) inside a live browser session: scrolls it into view and fires a DOM click on the session's"},{"name":"session_click_xy","description":"Click at viewport coordinates (CSS pixels) via real mouse events — pointerdown/mousedown, pointerup/mouseup, then click on whatever element is hit there. For ca"},{"name":"session_clone","description":"Derive a new browser session from a live one, carrying the full login state: cookies, localStorage/sessionStorage, viewport pin, dialog policy, proxy and keepal"},{"name":"session_close","description":"Close a browser session and free its resources. For a persistent session this also drops the on-disk login snapshot - idle expiry keeps it, an explicit close do"},{"name":"session_console","description":"Read the session's recent page console output (log/info/warn/error) as {url, total, matched, messages:[{ts_ms, level, text, url}]}, newest last. Ring buffer of "},{"name":"session_cookies","description":"Export the session's current cookies as [\"name=value\", ...] for the page's URL. Use to persist a logged-in session and replay it later via session_create with c"},{"name":"session_create","description":"Create a persistent interactive browser session for multi-step interaction - clicking, typing, scrolling, reading state across page transitions. Use when the ag"},{"name":"session_dialog","description":"Inspect or flip the session's dialog policy for window.alert/confirm/prompt. Dialogs never block the page: each is auto-answered (default dismiss) and logged in"},{"name":"session_drag","description":"Drag the mouse from one viewport position to another: press at `from`, `steps` interpolated mousemove events (delay_ms apart), release at `to`. Moves AMarker-st"},{"name":"session_eval","description":"Execute arbitrary JavaScript in a live browser session and return the result. Runs in the session's current page, so DOM mutations, globals and storage persist "},{"name":"session_export","description":"Export a browser session's recorded action log. Format \"bash\" (default) returns a runnable curl script that replays every recorded action (navigate/click/input/"},{"name":"session_input","description":"Type text into an input/textarea element by its index (from session_state output)."},{"name":"session_list","description":"List live browser sessions with idle age and the time left before auto-eviction. Use to discover a session to reuse instead of creating a new one; sessions expi"},{"name":"session_navigate","description":"Navigate a browser session to a new URL."},{"name":"session_network","description":"Read the session's network request log. filter=\"media\" extracts playback/stream URLs (m3u8/HLS, mp4, dash, flv...) actually requested by the page's player at ru"},{"name":"session_screenshot","description":"Screenshot the session's CURRENT DOM state (mutations from clicks/evals included) as a base64 PNG via the built-in renderer. Width/height default to the session"},{"name":"session_scroll","description":"Scroll the page up or down by a number of viewport-heights."},{"name":"session_state","description":"Get the current page state as an indexed list of interactive elements. Returns compact text with [N] indexes for use with click/input tools."},{"name":"session_storage","description":"Snapshot the session's localStorage/sessionStorage for the current origin: {url, local_storage, session_storage}. Feed it back via session_create's `storage` fi"},{"name":"session_viewport","description":"Set the session's viewport (device emulation): scripts see innerWidth/innerHeight move, media queries like (max-width: 600px) re-evaluate, element rects re-anch"},{"name":"session_wait","description":"Wait until a CSS selector matches or a JS predicate turns truthy, with a timeout. The page's event loop keeps running while waiting (fetches, timers, promise ch"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"net.aginx/aginxbrowser","url":"https://registry.modelcontextprotocol.io/v0/servers/net.aginx%2Faginxbrowser","firstSeenAt":"2026-09-07T08:19:20.556Z","fetchedAt":"2026-09-07T08:19:20.556Z","normalizedAt":"2026-09-07T08:19:20.556Z"},{"source":"github","key":"github.com/yinnho/aginxbrowser","url":"https://github.com/yinnho/aginxbrowser","firstSeenAt":"2026-09-07T14:20:35.964Z","fetchedAt":"2026-09-07T19:19:41.550Z","normalizedAt":"2026-09-07T19:19:41.550Z"}]},"firstSeenAt":"2026-09-07T08:19:20.556Z","updatedAt":"2026-09-07T14:20:38.497Z"}