Aginx Browser
Qué hace este MCP
Provides stateful browser automation for web search, page fetching, clicking, typing, downloads, logins, session recording, and deterministic rendering.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The account to delete: stored record AND live jar.'}}}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'url'], 'properties': {'url': {'type': 'string', 'description': 'The login page URL to open as this account.'}, 'name': {'type': 'string', 'description': 'The account to log in as (created implicitly on first use; 1-64\nchars of [a-zA-Z0-9_-]).'}, 'predicate': {'type': ['string', 'null'], 'default': None, 'description': "A JS expression truthy on the page the site lands on AFTER login,\ne.g. `!!document.querySelector('.user-nick')`. With it and no human\nstep detected, the call waits for the automatic login bounce and\nstamps the account's verify spec on success. Without it, the call\njust opens the page and reports what kind of login it sees."}, 'use_proxy': {'type': 'boolean', 'default': False, 'description': 'Route through the engine proxy. Seeds a fresh account; an account\nwith an existing record reuses its recorded egress.'}, 'timeout_ms': {'type': 'integer', 'format': 'uint64', 'default': 60000, 'minimum': 0, 'description': 'Wait budget in ms for the automatic-login bounce (default 60000,\nclamped 1000..120000). Never spent while a human step\n(QR/SMS/password/slider) is outstanding â\x80\x94 those return immediately\nwith a session handoff.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'url': {'type': ['string', 'null'], 'default': None, 'description': 'Teach-once: the page that shows login state (its login wall if the\naccount is logged out). Remembered after the first call.'}, 'name': {'type': 'string', 'description': 'The account to check.'}, 'predicate': {'type': ['string', 'null'], 'default': None, 'description': "Teach-once: a JS expression that is truthy when logged in, e.g.\n`!!document.querySelector('.user-nick')`. Remembered after the first\ncall â\x80\x94 later calls can pass neither and rerun the spec."}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'all': {'type': 'boolean', 'default': False, 'description': 'With clear: delete everything cached for this caller'}, 'get': {'type': ['string', 'null'], 'default': None, 'description': 'Return the FULL cached content of this exact URL instead of listing hits'}, 'url': {'type': ['string', 'null'], 'default': None, 'description': 'Only rows whose URL contains this substring'}, 'kind': {'type': ['string', 'null'], 'default': None, 'description': 'Which rows to search: "auto" (default, pages + searches), "pages", or "searches"'}, 'clear': {'type': 'boolean', 'default': False, 'description': 'Delete matching rows instead of returning them (requires url, since_hours, or all)'}, 'limit': {'type': 'integer', 'format': 'uint', 'default': 10, 'minimum': 0, 'description': 'Maximum rows returned (default: 10, max 100)'}, 'query': {'type': ['string', 'null'], 'default': None, 'description': 'Full-text search over cached page contents, titles, URLs and past search queries. Omit to list the latest rows.'}, 'stats': {'type': 'boolean', 'default': False, 'description': 'Return row counts and database size instead of rows'}, 'since_hours': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': 'Only rows stored within the last N hours'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url', 'selector'], 'properties': {'url': {'type': 'string', 'description': 'The URL to load'}, 'selector': {'type': 'string', 'description': 'CSS selector of element to click'}, 'wait_secs': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': 'Seconds to wait for the page to settle after load, before clicking'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL of the file to download (http/https)'}, 'resume': {'type': 'boolean', 'default': False, 'description': 'Resume an interrupted download when a local partial file exists'}, 'cookies': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': 'Cookies to send with the request: `"name=value"` strings or\nCDP-style objects `{"name","value","domain",...}` for gated downloads'}, 'filename': {'type': ['string', 'null'], 'default': None, 'description': 'Explicit output filename. When omitted: Content-Disposition â\x86\x92 URL tail â\x86\x92 "download"'}, 'use_proxy': {'type': 'boolean', 'default': False, 'description': 'Route through proxy (default: false; auto-enabled for known blocked domains)'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url', 'script'], 'properties': {'url': {'type': 'string', 'description': 'The URL to load'}, 'script': {'type': 'string', 'description': 'JavaScript code to execute (supports async/Promise)'}, 'wait_secs': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': 'Seconds to wait before executing'}}}
Esquema de entrada
{'type': 'object', '$defs': {'RenderTier': {'oneOf': [{'type': 'string', 'const': 'auto', 'description': 'HTTP-direct first, fall back to diting browser. (default)'}, {'type': 'string', 'const': 'http', 'description': 'Pure HTTP, no V8/JS. Fastest; misses JS-rendered content.'}, {'type': 'string', 'const': 'browser', 'description': 'Always use the diting browser (current behaviour pre-tiering).\nWire name is "browser". "obscura" is still accepted and not advertised.'}], 'description': 'Tiered rendering strategy selector.'}, 'JsExtractParams': {'type': 'object', 'required': ['expression'], 'properties': {'expression': {'type': 'string', 'description': 'JavaScript expression to evaluate (e.g. "window.__INITIAL_STATE__")'}, 'timeout_ms': {'type': 'integer', 'format': 'uint64', 'default': 5000, 'minimum': 0, 'description': 'Timeout in milliseconds (default: 5000)'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The URL to fetch'}, 'format': {'type': 'string', 'default': 'markdown', 'description': 'Output format: "markdown", "html", or "text" (default: markdown)'}, 'sanitize': {'type': 'boolean', 'default': True, 'description': 'Strip prompt-injection payloads from the text output (default true):\nzero-width/steganographic characters, instruction-shaped lines\n("ignore previous instructions", chat markup tokens, CJK variants),\nand text hidden via opacity:0 / tiny fonts. A `sanitize_report`\nfield counts what was removed â\x80\x94 stripping is observable, never\nsilent. Set false for raw output.'}, 'selector': {'type': ['string', 'null'], 'default': None, 'description': 'CSS selector to extract specific content'}, 'max_chars': {'type': 'integer', 'format': 'uint', 'default': 50000, 'minimum': 0, 'description': 'Maximum characters to return (default: 50000)'}, 'use_proxy': {'type': 'boolean', 'default': False, 'description': 'Route through proxy (for blocked foreign sites)'}, 'wait_secs': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': 'Seconds to wait for JS rendering'}, 'js_extract': {'anyOf': [{'$ref': '#/$defs/JsExtractParams'}, {'type': 'null'}], 'default': None, 'description': 'JS expression to extract from the page after rendering'}, 'capture_xhr': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'default': None, 'description': 'Capture script-initiated API responses: a list of URL substrings\n(e.g. ["/api/"]) whose matching fetch/XHR bodies come back in an\n`xhr` array; an empty list captures every XHR/Fetch. Forces browser\nrendering (script-initiated requests only exist after JS runs).'}, 'render_tier': {'$ref': '#/$defs/RenderTier', 'default': 'auto', 'description': 'Rendering strategy: "auto" (default), "http", or "browser"'}, 'tls_fingerprint': {'type': ['string', 'null'], 'default': None, 'description': 'TLS fingerprint override (stealth mode only): "chrome145", "firefox133", etc.'}, 'auto_bypass_challenge': {'type': 'boolean', 'default': True, 'description': 'Auto-detect and bypass Cloudflare Turnstile challenges (default: true)'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Workflow name â\x80\x94 the DupHub template to pull and the directory it\nlands in (workflow/<name>/). Lowercase/digits/dashes.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'flow': {'default': None, 'description': 'Inline flow document: {create?, vars?, steps:[{op, args, expect?, save?}]}'}, 'name': {'type': ['string', 'null'], 'default': None, 'description': 'Or run a server-side workflow/<name>/flow.json asset. An unknown name\nerrors back with the list of installed workflows â\x80\x94 that error is the\ndiscovery call.'}, 'vars': {'default': None, 'description': "Values for {{placeholders}} in step args; wins over the flow's own\nvars defaults."}, 'max_steps': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': "Override the run's step-execution budget (branch loops re-run steps,\nso every revisit counts). Default 1000, clamped 1..=100000. A flow\ndocument may also declare its own max_steps; this wins."}, 'session_id': {'type': ['string', 'null'], 'default': None, 'description': "Reuse a live session (e.g. from import_curl) instead of creating a\nfresh one â\x80\x94 that's how login state and flows compose."}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'query': {'type': 'string', 'default': '', 'description': "Optional substring to narrow the listing (the hub's q filter over\nname/description). Empty lists everything installable."}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['curl'], 'properties': {'curl': {'type': 'string', 'description': 'A "Copy as cURL" command pasted from Chrome DevTools (Network panel â\x86\x92\nright-click any authenticated request). bash, PowerShell and cmd\nflavors all parse; the cookie set is injected and the session\nnavigates to the copied request\'s URL.'}, 'account': {'type': ['string', 'null'], 'default': None, 'description': "Attach the session to a named account: the imported login lands in\nthe account's private jar and is written back under its name after\nevery action â\x80\x94 one import per identity, no clobbering."}, 'use_proxy': {'type': 'boolean', 'default': False, 'description': "Route the session's traffic through the engine proxy."}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['markdown'], 'properties': {'theme': {'type': ['string', 'null'], 'description': 'Color theme: "light" (default) or "dark" â\x80\x94 the shell background/\nforeground and every SVG palette slot swap together; the receipt\nrecords which theme produced the bytes'}, 'motion': {'type': ['boolean', 'null'], 'description': 'Bake the entrance choreography into the artifact (default false):\npure-declarative CSS animation â\x80\x94 headings split into per-glyph/per-\nword spans that rise in with expo easing, prose blocks stagger up a\nnth-child delay ladder, and diagram figures grow in with a back\nease (GSAP\'s easing math as public cubic-bezier equivalents). The\ndiagrams animate too, on one story clock: nodes pop in one beat at\na time, solid edges draw themselves (dash-offset drain), dashed\nreturns fade, sequence messages land as they are "sent", and a\ntimed caption strip under each figure subtitles the beats â\x80\x94 under\nprefers-reduced-motion the strip becomes a static transcript.\nZero scripts: the file itself animates in any browser, subtitles\nand all; the receipt records motion (plus diagrams[].story with\nthe beat times, the hook for muxing voice later) so a cached\nartifact is never mistaken for the static one'}, 'preset': {'type': ['string', 'null'], 'description': 'Visual preset: "classic" (default), "signal-flow", "blueprint", or\n"editorial" â\x80\x94 a palette family orthogonal to theme (each preset\nexists in both light and dark). The receipt records preset and\ntheme separately'}, 'quality': {'type': ['string', 'null'], 'description': 'Quality profile for the composition audit: "standard" (default) or\n"showcase" â\x80\x94 the delivery gate. The audit grades route crossings,\ncorridors, label clearance, rhythm, and projected text size in the\nreceipt (diagrams[].composition); it never changes the artifact\nbytes, only how findings are severity-rated'}, 'markdown': {'type': 'string', 'description': 'Full markdown document. Prose rides a plain offline shell; archify\nfenced code blocks carry typed zero-coordinate diagram JSON and\nrender to inline SVG.'}, 'session_id': {'type': ['string', 'null'], 'description': 'Optional session ID: also load the rendered HTML into that live\nsession (local and free) so session_screenshot / session_state can\nverify the artifact'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Page URL to cut into pages.'}, 'width': {'type': 'integer', 'format': 'uint32', 'default': 794, 'minimum': 0, 'description': 'Page width in CSS pixels. Default 794 (A4 @96dpi).'}, 'format': {'type': 'string', 'default': 'pdf', 'description': 'Output format: "pdf" (default), "png" (one base64 PNG per page),\n"pptx" (one slide per page, image-based), "pptx-native" (editable:\nelement-level DrawingML â\x80\x94 real text runs, gradient shapes, image\nparts; requires `selector`), or "docx" (one page-sized section per\npage).'}, 'height': {'type': 'integer', 'format': 'uint32', 'default': 1123, 'minimum': 0, 'description': 'Page height in CSS pixels â\x80\x94 print pagination only. Default 1123.'}, 'selector': {'type': ['string', 'null'], 'default': None, 'description': 'CSS selector; present â\x86\x92 slides mode (one page per match, sized to the\nelement). Absent â\x86\x92 print mode (fixed-height pages at block boundaries).'}, 'max_pages': {'type': 'integer', 'format': 'uint', 'default': 50, 'minimum': 0, 'description': 'Safety cap on emitted pages. Default 50.'}, 'use_proxy': {'type': 'boolean', 'default': False, 'description': 'Route through proxy (for blocked foreign sites)'}, 'jpeg_quality': {'type': 'integer', 'format': 'uint8', 'default': 90, 'maximum': 255, 'minimum': 0, 'description': 'JPEG quality for PDF page embedding (1-100). Default 90.'}, 'tls_fingerprint': {'type': ['string', 'null'], 'default': None, 'description': 'TLS fingerprint override (stealth mode only)'}}}
Esquema de entrada
{'type': 'object', '$defs': {'RenderVideoAudio': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL of the music file. mp3/wav/ogg/m4a â\x80\x94 probed by content.'}, 'volume': {'type': 'number', 'format': 'float', 'default': 1.0, 'description': 'Linear multiplier 0..=2; 1 = as authored. Default 1.'}, 'loop_audio': {'type': 'boolean', 'default': True, 'description': 'Loop to cover the whole video. Default true.'}, 'fade_out_secs': {'type': 'number', 'format': 'float', 'default': 0.0, 'description': 'Fade out over the final N seconds. Default 0 (none).'}}, 'description': 'render_video `audio`: background music track â\x80\x94 fetched, looped to cover\nthe video, volume-scaled, optionally faded out at the end.'}, 'RenderNarrationClip': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL of the voice clip (any TTS output; mp3/wav/ogg/m4a).'}, 'volume': {'type': 'number', 'format': 'float', 'default': 1.0, 'description': 'Linear multiplier 0..=2. Default 1.'}, 'start_secs': {'type': 'number', 'format': 'double', 'default': 0.0, 'description': 'Seconds from video t=0 where this line starts. Default 0.'}}, 'description': 'render_video `narration[]`: one voiceover clip placed at a start time â\x80\x94\ngenerate with any TTS, hand us the URL; all clips mix into one AAC track.'}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'fps': {'type': 'number', 'format': 'double', 'default': 24.0, 'description': 'Frames per second. Default 24.'}, 'url': {'type': 'string', 'description': 'Page URL whose scripts register timelines in `window.__timelines`\n(GSAP-style objects with `duration()` + `pause(t)`).'}, 'audio': {'anyOf': [{'$ref': '#/$defs/RenderVideoAudio'}, {'type': 'null'}], 'default': None, 'description': 'Background music: looped to cover the video, volume-scaled, faded\nout at the tail.'}, 'width': {'type': 'integer', 'format': 'uint32', 'default': 1280, 'minimum': 0, 'description': 'Viewport width in CSS pixels (floored to even â\x80\x94 yuv420p). Default 1280.'}, 'height': {'type': 'integer', 'format': 'uint32', 'default': 720, 'minimum': 0, 'description': 'Viewport height in CSS pixels. Default 720.'}, 'narration': {'type': 'array', 'items': {'$ref': '#/$defs/RenderNarrationClip'}, 'default': [], 'description': 'Voiceover clips, each starting at its own time (any TTS output;\nmixed into one AAC track).'}, 'use_proxy': {'type': 'boolean', 'default': False, 'description': 'Route through proxy (for blocked foreign sites)'}, 'subtitles_srt': {'type': ['string', 'null'], 'default': None, 'description': 'Inline SRT subtitles muxed as a soft (toggleable) mov_text track.'}, 'burn_subtitles': {'type': ['boolean', 'null'], 'default': None, 'description': 'Burn the cues into the frame pixels too (hardsub) â\x80\x94 on by default\nwhen `subtitles_srt` is present; QuickTime, WeChat and most social\nembeds ignore the soft mov_text track. `false` keeps the soft track\nonly.'}, 'hold_tail_secs': {'type': 'number', 'format': 'double', 'default': 0.5, 'description': 'Freeze the final timeline state for this many extra seconds. Default 0.5.'}, 'tls_fingerprint': {'type': ['string', 'null'], 'default': None, 'description': 'TLS fingerprint override (stealth mode only)'}, 'max_duration_secs': {'type': 'number', 'format': 'double', 'default': 120.0, 'description': 'Safety cap on timeline + hold tail, seconds. Default 120.'}, 'wait_timelines_ms': {'type': 'integer', 'format': 'uint64', 'default': 10000, 'minimum': 0, 'description': 'How long to wait for `window.__timelines` to appear, ms. Default 10000.'}, 'subtitles_language': {'type': ['string', 'null'], 'default': None, 'description': 'ISO language tag for the subtitle track, e.g. "eng" / "zh".'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['q'], 'properties': {'q': {'type': 'string', 'description': 'Search query'}, 'engines': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': 'Restrict to these engine names (e.g. ["baidu"], ["sogou_wechat"]).\nEmpty = all engines serving `categories`. Invalid names return an\nerror listing the valid ones.'}, 'fetch_top': {'type': 'integer', 'format': 'uint', 'default': 0, 'minimum': 0, 'description': 'Fetch content for top N results'}, 'categories': {'type': 'string', 'default': 'general', 'description': 'Search categories (default: general)'}, 'time_range': {'type': ['string', 'null'], 'default': None, 'description': 'Freshness window: "day" | "week" | "month" | "year". Honored by\nengines with dated results (e.g. bing_news filters by pubDate);\nothers ignore it.'}, 'max_results': {'type': 'integer', 'format': 'uint', 'default': 10, 'minimum': 0, 'description': 'Maximum number of results (default: 10)'}, 'max_chars_per': {'type': 'integer', 'format': 'uint', 'default': 4000, 'minimum': 0, 'description': 'Max characters per result content'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'index'], 'properties': {'index': {'type': 'integer', 'format': 'uint', 'minimum': 0, 'description': 'Element index (from /state output)'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'x', 'y'], 'properties': {'x': {'type': 'number', 'format': 'double', 'description': 'Viewport X coordinate in CSS pixels'}, 'y': {'type': 'number', 'format': 'double', 'description': 'Viewport Y coordinate in CSS pixels'}, 'button': {'type': ['string', 'null'], 'default': None, 'description': 'Mouse button: "left" (default), "right", "middle"'}, 'session_id': {'type': 'string', 'description': 'Session ID'}, 'click_count': {'type': ['integer', 'null'], 'format': 'uint32', 'default': None, 'minimum': 0, 'description': 'Click count: 1 single (default), 2 adds dblclick, 3+ sets detail'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID to derive from (stays alive and untouched)'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'level': {'type': ['string', 'null'], 'default': None, 'description': 'Only entries at this level: "log" | "info" | "warn" | "error"'}, 'limit': {'type': ['integer', 'null'], 'format': 'uint', 'default': None, 'minimum': 0, 'description': 'Keep only the most recent N matching entries'}, 'since_ts': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': 'Only entries logged at or after this Unix epoch millisecond timestamp'}, 'session_id': {'type': 'string', 'description': 'Session ID'}, 'url_contains': {'type': ['string', 'null'], 'default': None, 'description': 'Only entries whose page URL contains this substring'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'meta': {'type': ['boolean', 'null'], 'default': None, 'description': 'Metadata-only view (#102): {name, domain, path, secure, httpOnly,\nsameSite, expires, hostOnly} per cookie â\x80\x94 no values, ever. For\nchecking what auth state exists; leave false for the value-bearing\nexport that round-trips login state.'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': ['string', 'null'], 'default': None, 'description': 'Initial URL to navigate to (optional). `start_url` is honored as an\nalias (#115) â\x80\x94 callers guessing that name must not land on about:blank.'}, 'width': {'type': ['integer', 'null'], 'format': 'uint32', 'minimum': 0, 'description': "Initial viewport width in CSS pixels. Pinned for the session's life\n(survives navigation) so element rects and media queries anchor to\nthe same layout across every page of the visit."}, 'height': {'type': ['integer', 'null'], 'format': 'uint32', 'minimum': 0, 'description': 'Initial viewport height in CSS pixels.'}, 'mobile': {'type': 'boolean', 'default': False, 'description': 'Mobile device emulation (coarse pointer, no hover) for the initial\nviewport.'}, 'account': {'type': ['string', 'null'], 'default': None, 'description': "Run as a named login identity (the multi-account layer): a private\ncookie jar seeded from the account record, write-back to the account\nstore after every action. Concurrent logins (`taobao-scraper` vs\n`taobao-publisher`) never clobber each other. The account record\nsurvives the session â\x80\x94 a later create with the same name picks up\nthe warm jar, plus the record's captured localStorage/sessionStorage\n(replayed onto the captured origin; an explicit `storage` param\nwins). 1-64 chars of [a-zA-Z0-9_-]."}, 'cookies': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': 'Cookies to inject before navigation: `"name=value"` strings or\nCDP-style objects `{"name","value","domain",...}`. Lets the session\nstart already logged-in. Round-trips with session_cookies.'}, 'storage': {'description': 'Web Storage to inject after the initial navigation lands:\n{"local_storage": {"k":"v"}, "session_storage": {"k":"v"}}. For login\nstates that live in localStorage rather than the cookie jar. An\noptional "origin": "https://site" key holds the injection until a\nnavigation lands on that origin (a session created without a\nstart_url sits on about:blank first). Round-trips with\nsession_storage.'}, 'ttl_secs': {'type': ['integer', 'null'], 'format': 'uint64', 'minimum': 0, 'description': 'Idle time-to-live in seconds before the session is evicted\n(default: 480, clamped 60..3600). Raise it for long workflows.'}, 'keepalive': {'type': 'boolean', 'default': False, 'description': 'Exempt the session from the idle reaper: it lives until\nsession_close or server exit, so a workflow interrupted by long\nnon-browser steps keeps its login state.'}, 'use_proxy': {'type': 'boolean', 'default': False, 'description': 'Route through proxy (default: false)'}, 'persistent': {'type': 'boolean', 'default': False, 'description': "Persist the login state (cookies + localStorage/sessionStorage +\nviewport + dialog policy) to the server's local store after every\naction. If the session idles out â\x80\x94 or the whole server restarts â\x80\x94\nthe next call with the same session_id revives it logged-in\n(storageState-style recovery, no re-login). Explicit session_close\ndrops the snapshot."}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'action'], 'properties': {'action': {'type': 'string', 'description': '"list" reports the policy and dialog history; "accept"/"dismiss" set\nthe answer applied to subsequent window.confirm/prompt calls (alert\nis always logged, never blocking).'}, 'session_id': {'type': 'string', 'description': 'Session ID'}, 'prompt_text': {'type': ['string', 'null'], 'default': None, 'description': 'With action "accept": text window.prompt returns once accepted\n(omitted keeps the current text).'}}}
Esquema de entrada
{'type': 'object', '$defs': {'SessionXy': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number', 'format': 'double', 'description': 'X coordinate in viewport CSS pixels'}, 'y': {'type': 'number', 'format': 'double', 'description': 'Y coordinate in viewport CSS pixels'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'from', 'to'], 'properties': {'to': {'$ref': '#/$defs/SessionXy', 'description': 'Where to release it'}, 'from': {'$ref': '#/$defs/SessionXy', 'description': 'Where to press the mouse button down'}, 'steps': {'type': ['integer', 'null'], 'format': 'uint32', 'default': None, 'minimum': 0, 'description': 'Interpolated mousemove events between from and to. Default: 24 with\nhumanize on, 10 without'}, 'delay_ms': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': 'Mean delay between moves in ms (default 18 humanized / 30 linear) â\x80\x94\nper-step timing is jittered around this when humanizing'}, 'humanize': {'type': ['boolean', 'null'], 'default': None, 'description': 'Humanize the trajectory: minimum-jerk easing, perpendicular wobble,\ntiming jitter, grip/settle pauses, occasional hesitation and\novershoot-and-correct. Set false when a test/tool needs exact linear\ninterpolation. Default: true'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'script'], 'properties': {'script': {'type': 'string', 'description': 'JavaScript code to execute'}, 'session_id': {'type': 'string', 'description': 'Session ID'}, 'timeout_ms': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': "Await budget for the script's promise in ms (default 5000, clamped\n100..120000). Pass a larger budget for slow page-side work such as\nuploads through the page's own fetch; on expiry the tool errors with\nEVAL_TIMEOUT (the script may still be running) instead of returning\na null result."}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'format': {'type': ['string', 'null'], 'default': None, 'description': 'Output format: "bash" (default) renders a runnable curl script that\nreplays every recorded action against a fresh session; "jsonl" returns\nthe raw action log, one JSON object per line; "json" returns a\nflow.json document (editable ops, cookies/storage stripped) for\nreplay via flow_run'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'index', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Text to type into the input field'}, 'index': {'type': 'integer', 'format': 'uint', 'minimum': 0, 'description': 'Element index (from /state output)'}, 'events': {'type': ['string', 'null'], 'default': None, 'description': 'Event fidelity: "full" types one character at a time with a\nkeydown/keypress/input/keyup cycle per character, for pages whose\nlisteners key on keyboard events (e.g. keypress-Enter login forms).\nDefault fires a single input+change pair after the value is set.'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'url'], 'properties': {'url': {'type': 'string', 'description': 'URL to navigate to'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'filter': {'type': ['string', 'null'], 'default': None, 'description': '"media" extracts playback/stream links (m3u8/HLS, mp4, dash, ...) from the requests the page actually issued - the reliable way to get a real video link, since URLs embedded in page HTML are often decoys. Media elements and player iframes the engine never fetches (video/audio/source src, iframe src) are merged in as candidates: entries carry via="network" (confirmed requests) or via="dom" (candidates, with their tag; iframes surface as kind "iframe" - player pages to navigate or sniff inside, not playable URLs). Omit to list every request as compact rows.'}, 'session_id': {'type': 'string', 'description': 'Session ID'}, 'url_contains': {'type': ['string', 'null'], 'default': None, 'description': 'Narrow the `xhr` array to URLs containing this substring.'}, 'body_max_chars': {'type': ['integer', 'null'], 'format': 'uint', 'default': None, 'minimum': 0, 'description': 'Per-body character cap for the `xhr` array (default 4000).'}, 'include_bodies': {'type': ['boolean', 'null'], 'default': None, 'description': "Add an `xhr` array of background API responses (the page's own fetch/XHR\ntraffic with retained bodies) alongside the request rows â\x80\x94 the page's\nAPI face is often the cleanest structured read of its data."}, 'include_headers': {'type': ['boolean', 'null'], 'default': None, 'description': "Add each request's outbound header set to its row (`headers` on the\ncompact rows, `request_headers` on the `xhr` rows) â\x80\x94 what the page's\nJS actually sent, signed customs like x-s/x-s-common included. Off by\ndefault: headers can carry tokens."}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'recipe': {'type': ['string', 'null'], 'default': None, 'description': 'Builtin recipe name appended after `scripts` (e.g. "xhs-sign"): the\nmaintained document-start wrapper for that site â\x80\x94 same source the\nengine auto-mounts on its navigations, without pasting JS. Unknown\nnames are an error, not a silent no-op.'}, 'scripts': {'type': 'array', 'items': {'type': 'string'}, 'default': [], 'description': "Full JS sources, in order. Sources run before each new document's own\nscripts (including inline ones) â\x80\x94 the only hook that beats pages whose\nsigning layer captures window.fetch/XHR natives at parse time. `[]`\nclears the group. Set before the session's first navigate and it\napplies to every navigation from then on."}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'dpr': {'type': ['number', 'null'], 'format': 'float', 'description': 'Device pixel ratio (#185): rasterize at device resolution (Retina/HiDPI\nsharp) â\x80\x94 the bitmap comes back width·dpr Ã\x97 height·dpr with CSS geometry\nintact. Clamped to 1.0..=3.0 (default: 1.0)'}, 'width': {'type': ['integer', 'null'], 'format': 'uint32', 'minimum': 0, 'description': "Render width in CSS pixels; defaults to the session's current viewport"}, 'height': {'type': ['integer', 'null'], 'format': 'uint32', 'minimum': 0, 'description': "Render height in CSS pixels; defaults to the session's current viewport"}, 'selector': {'type': ['string', 'null'], 'description': "CSS selector: capture only that element's box"}, 'full_page': {'type': 'boolean', 'default': False, 'description': 'Capture the full scrollable page instead of the viewport (default: false)'}, 'session_id': {'type': 'string', 'description': 'Session ID'}, 'selector_all': {'type': 'boolean', 'default': False, 'description': 'With selector, capture every match (default: first match only)'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'amount': {'type': 'integer', 'format': 'uint32', 'default': 3, 'minimum': 0, 'description': 'Scroll amount in viewport-heights (default: 3)'}, 'direction': {'type': 'string', 'default': 'down', 'description': 'Scroll direction: "up" or "down" (default: down)'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$defs': {'SessionFileSpecParams': {'type': 'object', 'required': ['name', 'content_base64'], 'properties': {'name': {'type': 'string', 'description': 'File name the page sees (and what multipart uploads as filename)'}, 'mime_type': {'type': ['string', 'null'], 'default': None, 'description': 'MIME type (default "application/octet-stream")'}, 'last_modified': {'type': ['number', 'null'], 'format': 'double', 'default': None, 'description': 'Last-modified time in ms since epoch (default: now)'}, 'content_base64': {'type': 'string', 'description': 'File content, standard base64 (padding allowed)'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'selector', 'files'], 'properties': {'files': {'type': 'array', 'items': {'$ref': '#/$defs/SessionFileSpecParams'}, 'description': 'Files to select'}, 'selector': {'type': 'string', 'description': 'CSS selector for the file input, e.g. "input[type=file]". File inputs\nare often hidden, so this is selector-addressed rather than using the\n/state index.'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'width': {'type': ['integer', 'null'], 'format': 'uint32', 'minimum': 0, 'description': 'Viewport width in CSS pixels; omit to keep the current width'}, 'height': {'type': ['integer', 'null'], 'format': 'uint32', 'minimum': 0, 'description': 'Viewport height in CSS pixels; omit to keep the current height'}, 'mobile': {'type': 'boolean', 'default': False, 'description': 'Mobile emulation: matchMedia answers pointer:coarse / hover:none and\nnavigator.maxTouchPoints reports 5 (default: false)'}, 'session_id': {'type': 'string', 'description': 'Session ID'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'selector': {'type': ['string', 'null'], 'description': 'CSS selector to wait for (e.g. ".price-card")'}, 'predicate': {'type': ['string', 'null'], 'description': 'JS expression polled until truthy (e.g. "document.querySelectorAll(\'.card\').length >= 3")'}, 'session_id': {'type': 'string', 'description': 'Session ID'}, 'timeout_ms': {'type': 'integer', 'format': 'uint64', 'default': 10000, 'minimum': 0, 'description': 'Give up after this many milliseconds (default: 10000, max: 120000)'}}}
Cambios recientes en herramientas
Servidores MCP similares
TinyFn
Offers deterministic utility functions for mathematics, conversions, validation, hashing, encoding, arrays, dates, colors, and pa…
hyperion
Acts as a paid MCP tool marketplace and utility gateway with server discovery, HTTP and JavaScript tools, research, data conversi…
Andreax
Offers pay-per-call AI services for inference, agent and workflow design, OCR and transcription, code generation and review, clas…
Vee3
Manages Clerk authentication infrastructure, including users, organizations, domains, sessions, tokens, OAuth, SSO, machines, per…
Courier
Provides notification delivery infrastructure for users, tenants, lists, templates, preferences, journeys, automations, brands, a…
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
IA-QA — 130+ QA & Dev Tools for AI Agents
Provides deterministic QA, evaluation, testing, code analysis, prompt and RAG checks, model comparison, and web security diagnost…
apis-io
Provides catalog search, comparison, scoring, enrichment, lists, and dataset exports for APIs, providers, specifications, workflo…