Skip to main content
Glama

Yutori MCP

MCP tools and workflow skills for building agents that operate computers as well as browse, research, and monitor the web with Yutori.

You can use it with Claude Code, Codex, Cursor, VS Code, ChatGPT, OpenClaw, and other MCP hosts.

Features

Capabilities:

  • Computer use β€” Operate apps on your Mac (macOS 15+)

  • Browsing β€” Automate websites with an AI navigator

  • Research β€” Run one-time deep web research tasks

  • Scouting β€” Monitor the web continuously for anything you care about at a desired frequency

Workflow skills (for clients that support slash commands):

Related MCP server: @meshbrow/mcp-server

Installation

If you don't already have uv installed, install it (it includes uvx):

curl -LsSf https://astral.sh/uv/install.sh | sh

Or with Homebrew:

brew install uv

Python 3.10 or higher is required (uv manages this automatically for most installs).

For the quickstart below, Node.js is also required (for npx).

Paste this into Claude Code, Codex, Cursor, Windsurf, or another coding agent:

Use https://yutori.com/api/llms.txt and set up Yutori for me.

Manual quick install

MCP server installation

  1. Run in terminal:

    uvx yutori-mcp login

    This will open Yutori Platform in your browser and save your API key locally.

    Go to (https://platform.yutori.com) and add your key to the config file:

    mkdir -p ~/.yutori
    cat > ~/.yutori/config.json << 'EOF'
    {"api_key": "yt-your-api-key"}
    EOF
  2. Install MCP using add-mcp (requires Node.js):

    npx -y add-mcp -n yutori "uvx yutori-mcp"

    Pick the clients you want to configure.

  3. Install workflow skills using skills.sh (requires Node.js):

    npx skills add yutori-ai/yutori-mcp -g

    Adds slash-command shortcuts like /yutori-scout, /yutori-research, and more.

    -g installs them at user scope. Omit -g if you want a project-local install instead.

    npx skills ls -g
    npx skills remove -g yutori-login
  4. Restart the tool you are using.

Manual per-client install

  1. Plugin (Recommended) - Includes MCP tools + workflow skills

    Type these commands in Claude Code's input (not in a terminal):

    /plugin marketplace add yutori-ai/yutori-mcp
    /plugin install yutori@yutori-plugins

    This installs both the MCP tools and workflow skills:

    Skill

    Description

    /yutori-computer-use

    Local Mac desktop automation

    /yutori-browse

    Browser automation tasks

    /yutori-research

    Deep web research workflow (async, 5-10 min)

    /yutori-scout

    Set up continuous web monitoring with comprehensive queries

    /yutori-competitor-watch

    Quick competitor monitoring template

    /yutori-api-monitor

    API/changelog monitoring template

    Already have the MCP server installed? Remove it first to avoid duplicate configurations:

    claude mcp remove yutori -s user   # if installed at user scope
    claude mcp remove yutori -s local  # if installed at local/project scope

    To uninstall the plugin later:

    /plugin uninstall yutori@yutori-plugins -s user
  2. MCP Only (if you prefer not to use the plugin)

    claude mcp add --scope user yutori -- uvx yutori-mcp

    The server reads your API key from ~/.yutori/config.json (set up via uvx yutori-mcp login).

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "yutori": {
      "command": "uvx",
      "args": ["yutori-mcp"]
    }
  }
}

The server reads your API key from ~/.yutori/config.json.

For setup details, see the Claude Desktop MCP install guide.

Click the button to install:

Or install manually:

Go to Cursor Settings β†’ MCP β†’ Add new MCP Server, then add:

{
  "mcpServers": {
    "yutori": {
      "command": "uvx",
      "args": ["yutori-mcp"]
    }
  }
}

The server reads your API key from ~/.yutori/config.json.

See the Cursor MCP guide for setup details.

Click the button to install:

Or install manually:

code --add-mcp '{"name":"yutori","command":"uvx","args":["yutori-mcp"]}'

The server reads your API key from ~/.yutori/config.json.

Open ChatGPT Desktop and go to Settings -> Connectors -> MCP Servers -> Add server.

{
  "mcpServers": {
    "yutori": {
      "command": "uvx",
      "args": ["yutori-mcp"]
    }
  }
}

The server reads your API key from ~/.yutori/config.json.

For setup details, see the OpenAI MCP guide.

  1. MCP Server:

    codex mcp add yutori -- uvx yutori-mcp

    Or add to ~/.codex/config.toml:

    [mcp_servers.yutori]
    command = "uvx"
    args = ["yutori-mcp"]

    The server reads your API key from ~/.yutori/config.json.

  2. Skills (optional, for workflow guidance):

    Install skills using $skill-installer inside Codex:

    $skill-installer install https://github.com/yutori-ai/yutori-mcp/tree/main/.agents/skills/yutori-computer-use
    $skill-installer install https://github.com/yutori-ai/yutori-mcp/tree/main/.agents/skills/yutori-browse
    $skill-installer install https://github.com/yutori-ai/yutori-mcp/tree/main/.agents/skills/yutori-research
    $skill-installer install https://github.com/yutori-ai/yutori-mcp/tree/main/.agents/skills/yutori-scout
    $skill-installer install https://github.com/yutori-ai/yutori-mcp/tree/main/.agents/skills/yutori-competitor-watch
    $skill-installer install https://github.com/yutori-ai/yutori-mcp/tree/main/.agents/skills/yutori-api-monitor

    Or manually copy skills to your user directory (use -L so symlinks are dereferenced and real files are copied):

    git clone https://github.com/yutori-ai/yutori-mcp /tmp/yutori-mcp
    cp -rL /tmp/yutori-mcp/.agents/skills/* ~/.agents/skills/

    To uninstall manually copied skills, delete the matching directories from ~/.agents/skills/. When updating this way, remove old Yutori skill directories first, since cp -rL will not delete renamed or removed skills.

    Restart Codex after installing skills.

    Skill

    Command

    Description

    Computer Use

    $yutori-computer-use

    Local Mac desktop automation

    Browse

    $yutori-browse

    Browser automation with AI navigator

    Research

    $yutori-research

    Deep web research (async, 5-10 min)

    Scout

    $yutori-scout

    Set up continuous web monitoring

    Competitor Watch

    $yutori-competitor-watch

    Quick competitor monitoring template

    API Monitor

    $yutori-api-monitor

    API/changelog monitoring template

    See the Codex Skills docs for more on skills.

Follow the Quickstart above:

  1. Install skills and MCP for OpenClaw (and optionally other tools) via skills.sh:

    npx skills add yutori-ai/yutori-mcp

    When prompted, choose which Yutori skills to install and select OpenClaw as the tool.

Add to ~/.gemini/settings.json. If you already have mcp or mcpServers, merge these keys into your existing config:

{
  "mcp": {
    "allowed": ["yutori"]
  },
  "mcpServers": {
    "yutori": {
      "command": "uvx",
      "args": ["yutori-mcp"]
    }
  }
}

The server reads your API key from ~/.yutori/config.json.

Add "yutori" to mcp.allowed if you already list other MCPs there. For more details, see the Gemini CLI MCP settings guide.

Install the package to run the MCP server (e.g. for custom or self-hosted setups):

pip install yutori-mcp

macOS computer use

Optional, macOS 15+ only. Computer use operates the visible desktop, or a single app window in the background while you keep working, so it needs a local driver and system permissions on top of the install above:

uvx yutori-mcp computer-use setup    # installs CuaDriver.app, requests Screen Recording + Accessibility

setup finishes by running the readiness checks and reports anything still missing. Re-run those checks any time with uvx yutori-mcp computer-use doctor.

Prompting a task from the terminal

The task is one quoted positional argument β€” plain English, in the imperative, as if you were handing the Mac to someone else:

uvx yutori-mcp computer-use run "<what to do, and what to report back>"

Everything else is optional. The three that matter most:

# Name the app you want driven, so the run starts in the right place
uvx yutori-mcp computer-use run "Compute 17 * 23 and report the result." --app Calculator

# Start a browser task on a specific page (--start-url requires --app)
uvx yutori-mcp computer-use run "List every person on the team page and save them to ~/Desktop/team.txt." \
  --app Safari --start-url https://yutori.com/company

# Drive one window in the background and keep working (--mode background requires --app)
uvx yutori-mcp computer-use run "Add a note titled Standup with today's three agenda items." \
  --app Notes --mode background

Write the prompt so the run has a finish line:

  • Say what "done" looks like. "…and report the list" or "…and save it to ~/Desktop/team.txt" gives the model something to stop at; "look at the team page" does not.

  • Name the app and the starting page with --app / --start-url instead of describing them in the prompt. The runner opens them before the model's first screenshot, which saves turns and avoids the model guessing at which window to use.

  • Spell out the constraints you care about β€” which account to use, which folder to write to, what to do when something is ambiguous ("if the page asks to log in, stop and say so").

  • Keep it one task. One run holds a machine-wide lock; chain separate runs rather than packing five errands into one prompt.

  • Don't put secrets in the prompt. Have the model use an already-signed-in app or an entry in Keychain; typed text shows up (scrubbed and truncated) in the action log.

Flag

Default

What it does

--app NAME

none

App to target; opened and readied before the first screenshot

--start-url URL

none

Page to open in --app first. Requires --app

--minutes N

30

Absolute deadline, 1–60. The run stops here regardless of progress

--max-steps N

60

Model turns before stopping; one turn can take several actions

--mode background

foreground

Drives only --app's window, without taking focus. Requires --app

--allow-foreground-fallback

off

Background only: retry a missed action with the window briefly fronted

--env dev

production

Runs against platform.dev.yutori.com. Goes before the subcommand: yutori-mcp --env dev computer-use run "…"

Foreground (the default) drives the whole visible desktop β€” don't touch the Mac while it runs. Background drives one app's window and captures only that window, so you can keep working; leave that window alone. Some apps accept background clicks but not typed keys (Calculator, for one), and the run reports the refusal rather than typing blind β€” add --allow-foreground-fallback for typing-heavy background tasks.

uvx yutori-mcp computer-use stop ends the active run from another terminal (background runs have no on-screen Stop button). uvx yutori-mcp computer-use smoke is an end-to-end check: it types into Calculator to confirm the permissions took effect, then has the agent compute 9 * 9.

While a task runs, run prints each action as the agent takes it β€” including the individual clicks, keystrokes, and scrolls inside each computer_batch β€” and closes with the model's answer in a labeled FINAL OUTPUT block. Output is colorized when stdout is a terminal; set NO_COLOR=1 to turn that off, or FORCE_COLOR=1 to keep it through a pipe.

The harness in this repository is minimal: one task at a time (a machine-wide lock), either on the visible desktop or targeting one app window in the background, with no multiplexing. For scalable sandbox runs, see n2 on Daytona.

Tools

See TOOLS.md for the full tool reference β€” computer use, Browsing, Research, and Scout tools with parameters, examples, and response formats.

Development

Setup

git clone https://github.com/yutori-ai/yutori-mcp
cd yutori-mcp
pip install -e ".[dev]"

Testing

pytest

Running locally

yutori-mcp login    # authenticate (one-time)
yutori-mcp          # run the server (or: python -m yutori_mcp.server)

Computer-use runtime

computer-use doctor verifies the pinned yutori SDK install against the published wheel. SDK contributors testing an editable checkout can override that with YUTORI_MCP_ALLOW_EDITABLE_SDK=1.

Debugging with MCP Inspector

npx @modelcontextprotocol/inspector yutori-mcp

API Documentation

For full API documentation, visit docs.yutori.com.

License

Apache 2.0

Available Tools

13 tools
create_scoutB

Create a monitoring scout for continuous web monitoring. Scouts track changes relevant to a query and alert you. Examples: 'news about Yutori', 'H100 pricing below $1.50'.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
is_publicNo
skip_emailNo
webhook_urlNo
output_fieldsNo
user_locationNo
user_timezoneNo
webhook_formatNo
output_intervalNo
start_timestampNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses core behavior (creates scout, monitors, alerts) but omits details like required permissions, reversibility, or side effects. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with action and purpose, and includes examples. Efficient but could be improved by adding parameter guidance without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 10 parameters and a complex domain, the description is incomplete. It neglects to explain optional parameters like webhook_url, output_fields, or start_timestamp, and doesn't mention the output schema. Significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; description fails to explain any of the 10 parameters, including the required 'query'. No additional meaning provided beyond the schema. Parameter documentation is completely absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create', resource 'scout', and purpose 'continuous web monitoring, track changes, alert'. Examples clarify use cases. It distinguishes from siblings like delete_scout and list_scouts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for setting up new monitoring scouts but lacks explicit when-to-use, when-not-to-use, or alternatives. No guidance relative to siblings beyond the context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_scoutA
Destructive

Permanently delete a scout and all its data. This action cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
scout_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already set destructiveHint=true. Description adds 'cannot be undone' but doesn't provide further behavioral details like permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences with no unnecessary words. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with output schema, the description covers the core action and consequence. Could mention how to obtain scout_id, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage. The tool description does not explain the scout_id parameter or its format, leaving it ambiguous for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'delete' and resource 'scout', emphasizing permanence. It distinguishes itself from sibling tools like create_scout and edit_scout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives, or precautions. The description only states the action and its irreversibility.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_scoutA
Idempotent

Update an existing scout's query, schedule, webhook configuration, or status. Use status='paused' to pause, 'active' to resume, or 'done' to archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
statusNo
scout_idYes
is_publicNo
skip_emailNo
webhook_urlNo
output_fieldsNo
user_locationNo
user_timezoneNo
webhook_formatNo
output_intervalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotency; description adds status behavior (pause/resume/archive) but lacks details on update semantics (partial vs full) or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey purpose and a key usage pattern (status values) with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex (11 parameters, 1 required, various updates), but the description covers only a small subset of functionality, lacking details on optional parameters and update behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description only groups parameters vaguely (query, schedule, webhook) and fails to explain most of the 11 parameters (e.g., is_public, output_fields).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing scout' with specific updatable aspects (query, schedule, webhook, status), distinguishing it from create_scout and delete_scout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for updating scouts but provides no explicit guidance on when to use vs alternatives or prerequisite conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_browsing_task_resultA
Read-only

Poll for browsing task status and result. Call until status is 'succeeded' or 'failed'.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate read-only operation, and the description adds the polling aspect. No contradictions; it discloses the need for repeated calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded action verb, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers polling loop and terminal statuses; output schema exists so return values are not needed. Minor gaps in error handling or rate limits, but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only required parameter 'task_id' has no description in the schema or the tool description, leaving its meaning unelaborated despite self-explanatory name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it polls for browsing task status and result, distinguishing it from sibling tools like run_browsing_task by specifying the polling behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs to call until status is 'succeeded' or 'failed', providing a clear usage pattern. However, it does not mention polling interval or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_research_task_resultA
Read-only

Poll for research task status and result. Call until status is 'succeeded' or 'failed'.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the polling behavior and the final statuses, which complements the readOnlyHint annotation. It does not cover error handling or rate limits, but it adds useful behavioral context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the purpose and then providing the usage instruction. Every part is relevant and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and an output schema, so the description's polling pattern and termination condition are sufficient. It lacks details on possible initial statuses or errors, but the output schema likely covers return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not elaborate on the only parameter 'task_id', despite the schema having 0% description coverage. The parameter's purpose is implied but not explicitly clarified, which is insufficient for complete understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool polls for the status and result of a research task, specifying the verb 'poll for' and the resource 'research task status and result'. It distinguishes from siblings like run_research_task and list_research_tasks by focusing on retrieving results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to 'Call until status is 'succeeded' or 'failed'', providing a clear usage pattern. It implies a polling loop but does not mention when not to use it or alternative tools, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scout_detailA
Read-only

Get detailed information about a specific scout.

ParametersJSON Schema
NameRequiredDescriptionDefault
scout_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, so description does not add behavioral context beyond that. No mention of side effects, permissions, or rate limits. Adequate but not enhanced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words. Front-loaded with verb and noun. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple with 1 param and output schema present, so description is minimally adequate. However, additional context about the scope of 'detailed information' could improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage and parameter is only named 'scout_id' with type string. Description does not clarify format (e.g., UUID, integer) or provide any additional meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Get' and resource 'scout' with scope 'detailed information' and specificity. It distinguishes from siblings like list_scouts (list all) and mutation tools (create, delete, edit).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when or when-not guidance, but usage is implied: use when you need details of a specific scout. No mention of alternatives like get_scout_updates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scout_updatesA
Read-only

Get paginated updates/reports for a scout. Each update contains findings from a run.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
scout_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true indicates read-only, and the description adds that results are paginated and contain findings. No contradictions. Some additional details like ordering or error behavior would enhance transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. Purpose and content are front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple read tool with an output schema, but lacks parameter details. It provides context about update contents, but could be more complete regarding pagination behavior and defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should explain parameters. It mentions pagination but does not describe limit or cursor, missing an opportunity to clarify their roles and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves paginated updates/reports for a specific scout, with findings from a run. This distinguishes it from siblings like get_scout_detail or list_scouts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when needing historical scout updates, but does not explicitly mention when to avoid or compare with alternatives such as get_scout_detail or list_scouts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_api_usageA
Read-only

Get API usage statistics including active scout counts, rate limits, and activity metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnlyHint=true, and the description's 'Get' verb aligns with that. The description adds value by listing specific returned metrics (active scout counts, rate limits, activity metrics), which is beyond what annotations provide. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 12 words, front-loaded with the core action and resource. Every word adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 optional param, output schema exists, read-only annotation provided), the description is minimally adequate. However, it omits guidance on how the 'period' parameter affects results and does not explain the output schema structure. The presence of an output schema partially compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not mention the optional 'period' parameter at all, despite the schema having 0% description coverage. The agent must infer its purpose solely from the schema's enum values, which is insufficient for optimal invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and identifies the resource as 'API usage statistics'. It clearly distinguishes from sibling tools like 'list_scouts' which list individual scouts, not aggregate usage. The inclusion of example data points (active scout counts, rate limits) adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving API usage statistics, but does not explicitly state when to prefer this tool over siblings like 'list_scouts' or 'list_browsing_tasks'. No when-not or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_browsing_tasksA
Read-only

List one-time browsing tasks for the authenticated user. Supports cursor pagination and status filtering. List status is approximate (running also covers queued and not-yet-reconciled tasks); call get_browsing_task_result for a task's authoritative status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description reveals that list status is approximate and that 'running' also covers queued and not-yet-reconciled tasks, adding valuable behavioral context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with a clear purpose statement and key usage notes, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers core functionality, pagination, status nuance, and references the detailed get tool. It could mention that results are scoped to the authenticated user, but the presence of an output schema reduces the need for return value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description mentions 'cursor pagination' and 'status filtering' but does not explain the individual parameters (limit, cursor, status) or how to use them effectively, leaving significant gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists one-time browsing tasks for the authenticated user, distinguishing it from sibling list tools (list_research_tasks, list_scouts) by specifying 'browsing tasks' and 'one-time'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes pagination and status filtering, and directs users to get_browsing_task_result for authoritative status, providing good contextual guidance. However, it could more explicitly state when not to use this tool (e.g., for single task details) and list alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_research_tasksA
Read-only

List one-time research tasks for the authenticated user. Supports cursor pagination and status filtering. List status is approximate (running also covers queued and not-yet-reconciled tasks); call get_research_task_result for a task's authoritative status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond 'readOnlyHint' annotation, description discloses that list status is approximate and 'running' covers queued/reconciling tasks, providing important behavioral context. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no redundancy. Front-loaded with purpose, followed by key features and a caveat. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present, description needn't detail returns. Covers pagination, filtering, status approximation, and directs to sibling for authoritative status. Sufficient for a list tool with simple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. Mentions 'cursor pagination and status filtering', giving context for limit, cursor, and status parameters. However, does not detail each parameter's syntax or behavior (e.g., cursor format, limit bounds). Partial compensation raises score from baseline 1 to 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states it lists one-time research tasks for the authenticated user, uses specific verb 'list' and resource 'research tasks', and distinguishes from sibling 'get_research_task_result' by noting the approximate status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for use: list tasks with pagination and status filtering. Explicitly advises to use 'get_research_task_result' for authoritative status, indicating when not to use this tool. Differentiates from 'list_browsing_tasks' and 'run_research_task' siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_scoutsA
Read-only

List all scouts for the authenticated user. Returns basic metadata; use get_scout_detail for full fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnlyHint=true, so the agent knows it's safe. The description adds the context that it returns basic metadata, but does not disclose additional behavioral details like authentication requirements or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary action, and contains no redundant or extraneous information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 optional params, output schema exists), the description covers the core purpose and differentiator. However, it omits guidance on pagination and status filtering, which would be beneficial for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not elaborate on any of the three parameters (limit, cursor, status). With 0% schema description coverage, the description fails to add meaning beyond the schema, leaving the agent to infer filtering and pagination behavior from parameter names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all scouts for the authenticated user,' specifying the verb and resource. It also distinguishes itself from the sibling 'get_scout_detail' by noting it returns basic metadata, aiding differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly guides usage by contrasting with get_scout_detail for full fields. However, it does not mention when to use alternatives like filtering by status or pagination, leaving some ambiguity about the tool's full scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_browsing_taskC

Execute a one-time web browsing task. The navigator agent runs a browser and operates it like a person. Returns a task_id for polling. Example: 'list employees'. Set browser='local' to use the desktop app with the user's logged-in sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYes
browserNo
max_stepsNo
start_urlYes
webhook_urlNo
require_authNo
output_fieldsNo
webhook_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It mentions the agent 'operates it like a person' and returns a task_id, but it does not disclose whether the tool is destructive, requires authentication, has rate limits, or what the scope of 'browsing' entails (e.g., navigation, form filling, scraping). This leaves significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short (3 sentences) and front-loads the purpose. However, it sacrifices completeness for brevity, omitting critical parameter details and usage context. It is not overly verbose, but the conciseness is at the expense of utility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters (2 required), the presence of an output schema, and many sibling tools, the description is incomplete. It fails to explain how to use webhooks, polling, authentication, or output_fields. It also does not differentiate from the similar sibling run_research_task, leaving the agent without sufficient context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only touches on 'task' (via example) and 'browser' (hint for local), but ignores the other 6 parameters (start_url, max_steps, webhook_url, require_auth, output_fields, webhook_format). No details on data types, constraints, or semantics beyond what the schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes a one-time web browsing task and uses a navigator agent that operates a browser like a person. It returns a task_id for polling, which defines the resource and action. However, it does not explicitly differentiate from sibling tools like run_research_task, so it loses some clarity for distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an example ('list employees') and a usage hint for setting browser='local' to use the desktop app with logged-in sessions, which implies when this mode is appropriate. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., run_research_task, create_scout) and does not mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_research_taskB

Execute a one-time deep web research task. The research agent searches, reads, and synthesizes information from across the web. Returns a task_id for polling. Example: 'latest AI startup funding announcements'.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
webhook_urlNo
output_fieldsNo
user_locationNo
user_timezoneNo
webhook_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It mentions async polling ('Returns a task_id for polling') and broad actions (search, read, synthesize), but omits authentication needs, rate limits, data privacy, error handling, or whether it is read-only. The behavior is partially described but insufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences and an example, with no filler. It front-loads the key action and async nature. While it could include more detail, the structure is efficient and immediately clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, zero schema descriptions, and an existing output schema, the description is incomplete. It does not elaborate on output format, webhook usage, or parameter effects. The description is minimal and relies heavily on the tool name and sibling context, missing many details needed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only implicitly references the query parameter via the example and does not explain webhook_url, output_fields, user_location, user_timezone, or webhook_format. No parameter names or purposes are mentioned, leaving agents to infer meaning from context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Execute a one-time deep web research task' with a specific verb and resource. It differentiates from sibling tools like create_scout (recurring) and run_browsing_task by emphasizing 'one-time' and 'deep web.' The example provides concrete usage context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for one-time web research via phrases like 'one-time' and 'deep web research,' but it does not explicitly state when to use this tool versus alternatives (e.g., run_browsing_task or create_scout). No when-not or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 13 tool updatesv0.3.1
    • Changedcreate_scout36 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for creating a new monitoring scout.\n\nScouts enable continuous monitoring of the web at a configurable schedule\nfor tracking any changes relevant to a query. Example queries:\n- \"anytime a startup in SF announces seed funding\"\n- \"when H100 pricing per hour drops below $1.50\"\n- \"latest news and product updates about Yutori\""
      • addedInput schema / properties / is_public / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / is_public / description
        Removed value: -"Whether scout results are publicly accessible"
      • removedInput schema / properties / is_public / type
        Removed value: -"boolean"
      • addedInput schema / properties / output_fields / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / output_fields / description
        Removed value: -"Optional: Extract structured data as an array of objects with these field names. Example: ['headline', 'summary', 'url']. If omitted, returns human-readable text. For complex schemas, call the Yutori REST API directly (see example at: https://docs.yutori.com/reference/scouts-create#using-scheduling-webhooks-and-a-structured-output-schema)."
      • removedInput schema / properties / output_fields / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / output_fields / minItems
        Removed value: -1
      • removedInput schema / properties / output_fields / type
        Removed value: -"array"
      • addedInput schema / properties / output_interval / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / output_interval / description
        Removed value: -"Seconds between scout runs. Minimum 1800 (30 minutes). Default: 86400 (daily)"
      • removedInput schema / properties / output_interval / minimum
        Removed value: -1800
      • removedInput schema / properties / output_interval / type
        Removed value: -"integer"
      • removedInput schema / properties / query / description
        Removed value: -"Natural language description of what to monitor. Examples: 'Tell me about the latest news, product updates, or announcements about Yutori', 'when H100 pricing per hour drops below $1.50', 'anytime a startup in SF announces seed funding'"
      • addedInput schema / properties / skip_email / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / skip_email / description
        Removed value: -"If true, skip email notifications (useful with webhooks)"
      • removedInput schema / properties / skip_email / type
        Removed value: -"boolean"
      • addedInput schema / properties / start_timestamp / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / start_timestamp / description
        Removed value: -"Unix timestamp for when monitoring should start (0 = immediately)"
      • removedInput schema / properties / start_timestamp / type
        Removed value: -"integer"
      • addedInput schema / properties / user_location / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / user_location / description
        Removed value: -"User location for geo-relevant searches. Format: 'city, region, country'"
      • removedInput schema / properties / user_location / type
        Removed value: -"string"
      • addedInput schema / properties / user_timezone / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / user_timezone / description
        Removed value: -"Timezone for scheduling. Example: 'America/New_York'. Default: 'America/Los_Angeles'"
      • removedInput schema / properties / user_timezone / type
        Removed value: -"string"
      • addedInput schema / properties / webhook_format / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "scout",
        +      "slack",
        +      "zapier"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_format / description
        Removed value: -"Webhook payload format: 'scout' (default), 'slack', or 'zapier'"
      • removedInput schema / properties / webhook_format / enum
        Removed value: -[
        -  "scout",
        -  "slack",
        -  "zapier"
        -]
      • removedInput schema / properties / webhook_format / type
        Removed value: -"string"
      • addedInput schema / properties / webhook_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_url / description
        Removed value: -"HTTPS URL to receive webhook notifications when updates are available. Must use https://. Confirm the URL with the user before setting."
      • removedInput schema / properties / webhook_url / type
        Removed value: -"string"
      • changedInput schema / title
        Previous value: -"CreateScoutInput"New value: +"create_scoutArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "create_scoutOutput",
        +  "type": "object"
        +}
    • Changeddelete_scout5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for operations on a specific scout."
      • removedInput schema / properties / scout_id / description
        Removed value: -"The scout's unique identifier (UUID)"
      • changedInput schema / title
        Previous value: -"ScoutIdInput"New value: +"delete_scoutArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "delete_scoutOutput",
        +  "type": "object"
        +}
    • Changededit_scout40 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for editing an existing scout or changing its status."
      • addedInput schema / properties / is_public / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / is_public / description
        Removed value: -"Whether scout results are publicly accessible"
      • removedInput schema / properties / is_public / type
        Removed value: -"boolean"
      • addedInput schema / properties / output_fields / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / output_fields / description
        Removed value: -"Optional: Extract structured data as an array of objects with these field names. Example: ['headline', 'summary', 'url']. If omitted, returns human-readable text. For complex schemas, call the Yutori REST API directly"
      • removedInput schema / properties / output_fields / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / output_fields / minItems
        Removed value: -1
      • removedInput schema / properties / output_fields / type
        Removed value: -"array"
      • addedInput schema / properties / output_interval / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / output_interval / description
        Removed value: -"Updated run interval in seconds. Minimum 1800 (30 minutes)"
      • removedInput schema / properties / output_interval / minimum
        Removed value: -1800
      • removedInput schema / properties / output_interval / type
        Removed value: -"integer"
      • addedInput schema / properties / query / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / query / description
        Removed value: -"Updated monitoring query"
      • removedInput schema / properties / query / type
        Removed value: -"string"
      • removedInput schema / properties / scout_id / description
        Removed value: -"The scout's unique identifier (UUID)"
      • addedInput schema / properties / skip_email / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / skip_email / description
        Removed value: -"Updated email notification preference"
      • removedInput schema / properties / skip_email / type
        Removed value: -"boolean"
      • addedInput schema / properties / status / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "active",
        +      "paused",
        +      "done"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / status / description
        Removed value: -"Change scout status: 'active' (resume monitoring), 'paused' (stop temporarily), 'done' (archive permanently)"
      • removedInput schema / properties / status / enum
        Removed value: -[
        -  "active",
        -  "paused",
        -  "done"
        -]
      • removedInput schema / properties / status / type
        Removed value: -"string"
      • addedInput schema / properties / user_location / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / user_location / description
        Removed value: -"User location for geo-relevant searches"
      • removedInput schema / properties / user_location / type
        Removed value: -"string"
      • addedInput schema / properties / user_timezone / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / user_timezone / description
        Removed value: -"Timezone for scheduling. Example: 'America/New_York'"
      • removedInput schema / properties / user_timezone / type
        Removed value: -"string"
      • addedInput schema / properties / webhook_format / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "scout",
        +      "slack",
        +      "zapier"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_format / description
        Removed value: -"Webhook payload format: 'scout' (default), 'slack', or 'zapier'"
      • removedInput schema / properties / webhook_format / enum
        Removed value: -[
        -  "scout",
        -  "slack",
        -  "zapier"
        -]
      • removedInput schema / properties / webhook_format / type
        Removed value: -"string"
      • addedInput schema / properties / webhook_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_url / description
        Removed value: -"Updated HTTPS webhook URL. Must use https://. Confirm the URL with the user before setting."
      • removedInput schema / properties / webhook_url / type
        Removed value: -"string"
      • changedInput schema / title
        Previous value: -"EditScoutInput"New value: +"edit_scoutArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "edit_scoutOutput",
        +  "type": "object"
        +}
    • Changedget_browsing_task_result5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for retrieving a browsing or research task result."
      • removedInput schema / properties / task_id / description
        Removed value: -"The task's unique identifier"
      • changedInput schema / title
        Previous value: -"TaskIdInput"New value: +"get_browsing_task_resultArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_browsing_task_resultOutput",
        +  "type": "object"
        +}
    • Changedget_research_task_result5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for retrieving a browsing or research task result."
      • removedInput schema / properties / task_id / description
        Removed value: -"The task's unique identifier"
      • changedInput schema / title
        Previous value: -"TaskIdInput"New value: +"get_research_task_resultArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_research_task_resultOutput",
        +  "type": "object"
        +}
    • Changedget_scout_detail5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for operations on a specific scout."
      • removedInput schema / properties / scout_id / description
        Removed value: -"The scout's unique identifier (UUID)"
      • changedInput schema / title
        Previous value: -"ScoutIdInput"New value: +"get_scout_detailArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_scout_detailOutput",
        +  "type": "object"
        +}
    • Changedget_scout_updates13 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for retrieving scout updates."
      • addedInput schema / properties / cursor / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / cursor / description
        Removed value: -"Pagination cursor from a previous response"
      • removedInput schema / properties / cursor / type
        Removed value: -"string"
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of updates to return (1-100)"
      • removedInput schema / properties / limit / maximum
        Removed value: -100
      • removedInput schema / properties / limit / minimum
        Removed value: -1
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • removedInput schema / properties / scout_id / description
        Removed value: -"The scout's unique identifier (UUID)"
      • changedInput schema / title
        Previous value: -"GetUpdatesInput"New value: +"get_scout_updatesArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_scout_updatesOutput",
        +  "type": "object"
        +}
    • Changedlist_api_usage8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for retrieving API usage statistics."
      • addedInput schema / properties / period / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "24h",
        +      "7d",
        +      "30d",
        +      "90d"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / period / description
        Removed value: -"Time range for activity counts: '24h' (default), '7d', '30d', or '90d'"
      • removedInput schema / properties / period / enum
        Removed value: -[
        -  "24h",
        -  "7d",
        -  "30d",
        -  "90d"
        -]
      • removedInput schema / properties / period / type
        Removed value: -"string"
      • changedInput schema / title
        Previous value: -"UsageInput"New value: +"list_api_usageArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_api_usageOutput",
        +  "type": "object"
        +}
    • Addedlist_browsing_tasks
    • Addedlist_research_tasks
    • Changedlist_scouts14 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for listing scouts with optional limit and filtering."
      • addedInput schema / properties / cursor
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Cursor"
        +}
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of scouts to return (1-100). Default: 10"
      • removedInput schema / properties / limit / maximum
        Removed value: -100
      • removedInput schema / properties / limit / minimum
        Removed value: -1
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • addedInput schema / properties / status / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "active",
        +      "paused",
        +      "done"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / status / description
        Removed value: -"Filter by status: 'active', 'paused', or 'done'"
      • removedInput schema / properties / status / enum
        Removed value: -[
        -  "active",
        -  "paused",
        -  "done"
        -]
      • removedInput schema / properties / status / type
        Removed value: -"string"
      • changedInput schema / title
        Previous value: -"ListScoutsInput"New value: +"list_scoutsArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_scoutsOutput",
        +  "type": "object"
        +}
    • Changedrun_browsing_task30 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for running a one-time browsing task.\n\nThe Browsing API enables automation of browser-based workflows.\nAn AI agent runs its own cloud browser and operates it like a person -\nclicking, typing, scrolling, and navigating for you. Examples:\n- Fill forms on websites\n- Extract structured data from complex web pages\n- Automate multi-step workflows that require authentication"
      • addedInput schema / properties / browser / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "cloud",
        +      "local"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / browser / description
        Removed value: -"Where to run the browser. 'cloud' (default) uses Yutori's cloud browser. 'local' uses Yutori Local with the user's logged-in sessions on the desktop. Requires the desktop app to be running."
      • removedInput schema / properties / browser / enum
        Removed value: -[
        -  "cloud",
        -  "local"
        -]
      • removedInput schema / properties / browser / type
        Removed value: -"string"
      • addedInput schema / properties / max_steps / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / max_steps / description
        Removed value: -"Maximum number of browser actions (1-100). Default: 25"
      • removedInput schema / properties / max_steps / maximum
        Removed value: -100
      • removedInput schema / properties / max_steps / minimum
        Removed value: -1
      • removedInput schema / properties / max_steps / type
        Removed value: -"integer"
      • addedInput schema / properties / output_fields / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / output_fields / description
        Removed value: -"Optional: Extract structured data as an array of objects with these field names. Example: ['name', 'title', 'email']. If omitted, returns human-readable text. For complex schemas, call the Yutori REST API directly (see example at: https://docs.yutori.com/reference/browsing-create#using-webhooks-and-a-structured-output-schema)."
      • removedInput schema / properties / output_fields / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / output_fields / minItems
        Removed value: -1
      • removedInput schema / properties / output_fields / type
        Removed value: -"array"
      • addedInput schema / properties / require_auth / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / require_auth / description
        Removed value: -"If true, use an auth-optimized cloud browser provider for login flows. Only applies when browser is 'cloud' (default)."
      • removedInput schema / properties / require_auth / type
        Removed value: -"boolean"
      • removedInput schema / properties / start_url / description
        Removed value: -"The URL where the navigator should begin. Example: 'https://yutori.com'"
      • removedInput schema / properties / task / description
        Removed value: -"Natural language instruction for the navigator agent. Examples: 'Give me a list of all employees (names and titles) of Yutori', 'Fill out the contact form with my information', 'Extract product prices from this page'"
      • addedInput schema / properties / webhook_format / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "scout",
        +      "slack",
        +      "zapier"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_format / description
        Removed value: -"Webhook payload format: 'scout' (default), 'slack', or 'zapier'"
      • removedInput schema / properties / webhook_format / enum
        Removed value: -[
        -  "scout",
        -  "slack",
        -  "zapier"
        -]
      • removedInput schema / properties / webhook_format / type
        Removed value: -"string"
      • addedInput schema / properties / webhook_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_url / description
        Removed value: -"HTTPS URL to receive webhook notification when task completes. Must use https://."
      • removedInput schema / properties / webhook_url / type
        Removed value: -"string"
      • changedInput schema / title
        Previous value: -"BrowsingTaskInput"New value: +"run_browsing_taskArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "run_browsing_taskOutput",
        +  "type": "object"
        +}
    • Changedrun_research_task23 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / description
        Removed value: -"Input for running a one-time research task.\n\nThe Research API executes deep web research on any topic.\nAn AI agent searches, reads, and synthesizes information from across the web.\nExamples:\n- Research competitive landscape for a product\n- Summarize recent news about a company\n- Find technical documentation or specifications"
      • addedInput schema / properties / output_fields / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / output_fields / description
        Removed value: -"Optional: Extract structured data as an array of objects with these field names. Example: ['title', 'summary', 'source_url']. If omitted, returns human-readable text. For complex schemas, call the Yutori REST API directly (see example at: https://docs.yutori.com/reference/research-create#using-webhooks-and-a-structured-output-schema)."
      • removedInput schema / properties / output_fields / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / output_fields / minItems
        Removed value: -1
      • removedInput schema / properties / output_fields / type
        Removed value: -"array"
      • removedInput schema / properties / query / description
        Removed value: -"Natural language description of what to research. Examples: 'What are the latest developments in quantum computing from the past week?', 'Research the competitive landscape for AI code assistants', 'Find pricing information for cloud GPU providers'"
      • addedInput schema / properties / user_location / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / user_location / description
        Removed value: -"Location for contextual awareness. Format: 'city, region, country'. Default: 'San Francisco, CA, US'"
      • removedInput schema / properties / user_location / type
        Removed value: -"string"
      • addedInput schema / properties / user_timezone / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / user_timezone / description
        Removed value: -"Timezone for contextual awareness. Example: 'America/New_York'. Default: 'America/Los_Angeles'"
      • removedInput schema / properties / user_timezone / type
        Removed value: -"string"
      • addedInput schema / properties / webhook_format / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "scout",
        +      "slack",
        +      "zapier"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_format / description
        Removed value: -"Webhook payload format: 'scout' (default), 'slack', or 'zapier'"
      • removedInput schema / properties / webhook_format / enum
        Removed value: -[
        -  "scout",
        -  "slack",
        -  "zapier"
        -]
      • removedInput schema / properties / webhook_format / type
        Removed value: -"string"
      • addedInput schema / properties / webhook_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / webhook_url / description
        Removed value: -"HTTPS URL to receive webhook notification when research completes. Must use https://."
      • removedInput schema / properties / webhook_url / type
        Removed value: -"string"
      • changedInput schema / title
        Previous value: -"ResearchTaskInput"New value: +"run_research_taskArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "run_research_taskOutput",
        +  "type": "object"
        +}
  2. 11 tool updatesv0.3.0
    • Changedcreate_scout2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / output_fields / minItems
        Added value: +1
    • Changeddelete_scout1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changededit_scout2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / output_fields / minItems
        Added value: +1
    • Changedget_browsing_task_result1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_research_task_result1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_scout_detail1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_scout_updates1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_api_usage1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_scouts1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrun_browsing_task2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / output_fields / minItems
        Added value: +1
    • Changedrun_research_task2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / output_fields / minItems
        Added value: +1
  3. 11 tool updatesv0.2.9
    • First observedcreate_scout
    • First observeddelete_scout
    • First observededit_scout
    • First observedget_browsing_task_result
    • First observedget_research_task_result
    • First observedget_scout_detail
    • First observedget_scout_updates
    • First observedlist_api_usage
    • First observedlist_scouts
    • First observedrun_browsing_task
    • First observedrun_research_task

TDQS

A3.7/5.0
Disambiguation5/5

Tools are clearly separated into scout and task domains, each with distinct operations. No overlapping functionality between tools.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case, e.g., create_scout, get_scout_detail, list_browsing_tasks.

Tool Count5/5

13 tools cover two main areas (scouts and tasks) plus API usage, which is well-scoped for the server's purpose.

Completeness4/5

Scouts have full CRUD plus updates. Tasks lack delete/cancel operations, which is a minor gap for one-time tasks.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that provides autonomous, multi-source web research capabilities for AI agents. It delivers comprehensive, validated information through deep research tools while maintaining security and compatibility with various LLM providers.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for Meshbrow that gives AI agents full browser automation capabilities with stealth anti-detection, enabling natural language control of browser sessions, data extraction, and multi-browser fleets.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for web scraping and browser automation, enabling AI agents to extract clean, token-efficient content from web pages.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yutori-ai/yutori-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server