Skip to main content

MCP server for Yutori - web monitoring, deep research, and browser automation

Project description

Yutori MCP Server & Plugin

An MCP server and Claude Code plugin for Yutori - web monitoring and browsing automation.

Features

  • Scouts: Create agents that that monitor the web for anything you care about at a desired frequency
  • Research: Execute one-time deep web research tasks
  • Browsing: Execute one-time web browsing tasks using an AI website navigator (or a browser-use AI agent)

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

Authenticate

Run this once to install and log in to your Yutori account:

uvx yutori-mcp login

This opens your browser, authenticates with Yutori, and saves an API key locally (~/.yutori/config.json). All platforms below will use this saved key automatically.

Choose your platform

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

    Run these commands inside Claude Code:

    /plugin marketplace add yutori-ai/yutori-mcp
    /plugin install yutori@yutori-plugins
    
    Skill Description
    /yutori:scout Set up continuous web monitoring with comprehensive queries
    /yutori:research Deep web research workflow (async, 5-10 min)
    /yutori:browse Browser automation tasks
    /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
    
  2. MCP Only (if you prefer not to use the plugin)

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

    Or pass your API key explicitly instead of logging in:

    claude mcp add --scope user yutori --env YUTORI_API_KEY=yt-your-api-key -- uvx yutori-mcp
    
Claude Desktop

Add to your claude_desktop_config.json:

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

Or pass your API key explicitly via env var:

{
  "mcpServers": {
    "yutori": {
      "command": "uvx",
      "args": ["yutori-mcp"],
      "env": {
        "YUTORI_API_KEY": "yt-your-api-key"
      }
    }
  }
}

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

Cursor

Click the button to install:

Install in Cursor

Or install manually:

Go to Cursor Settings → MCP → Add new MCP Server, then add:

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

See the Cursor MCP guide for setup details.

VS Code

Click the button to install:

Install in VS Code Install in VS Code Insiders

Or install manually:

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

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

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

For setup details, see the OpenAI MCP guide.

Codex
  1. MCP Server:

    codex mcp add yutori -- uvx yutori-mcp
    

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

    [mcp_servers.yutori]
    command = "uvx"
    args = ["yutori-mcp"]
    
  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-scout
    $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-browse
    $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/
    

    Restart Codex after installing skills.

    Skill Command Description
    Scout $yutori-scout Set up continuous web monitoring
    Research $yutori-research Deep web research (async, 5-10 min)
    Browse $yutori-browse Browser automation with AI navigator
    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.

Gemini CLI

Add to ~/.gemini/settings.json:

{ ...file contains other config objects
  "mcp": {
    "allowed": ["yutori", "...other MCPs you already allow..."]
  },
  ...file contains other config objects
  "mcpServers": {
    "yutori": {
      "command": "uvx",
      "args": ["yutori-mcp"]
    }
  }
}

For more details, see the Gemini CLI MCP settings guide.

Using pip
pip install yutori-mcp

Tools

All tool outputs are formatted as human-readable text optimized for LLM consumption.

Scout Tools

list_scouts

List scouts for the user with optional filtering.

{
  "limit": 10,
  "status": "active"
}
Parameter Required Description
limit No Max scouts to return (1-100). Default: 10
status No Filter by active, paused, or done

Example response:

Found 87 scouts: 72 active, 12 paused, 3 done.

Showing 10 of 87:

1. Yutori news and updates (active)
   Query: "Tell me about the latest news, product updates, or..."
   ID: 690bd26c-0ef8-42f4-99e4-8fca6ea20e6f
   Runs daily | Next: 2026-01-16

2. Yutori API changelog (paused)
   Query: "Monitor Yutori API changelog for breaking changes"
   ID: 36d178a0-591f-4567-8019-32d24f9e55ba
   Runs every 12 hours | Next: 2026-01-10

... (8 more)

Use list_scouts(status="active") to filter by status.
Use list_scouts(limit=50) to see more.
Use get_scout_detail(scout_id) for full details.

get_scout_detail

Get detailed information for a specific scout.

{
  "scout_id": "690bd26c-0ef8-42f4-99e4-8fca6ea20e6f"
}

Example response:

Scout: Yutori news and updates
ID: 690bd26c-0ef8-42f4-99e4-8fca6ea20e6f
Status: active

Query: "Tell me about the latest news, product updates, or announcements about Yutori"

Schedule:
  Interval: daily
  Next run: 2026-01-16 18:32 UTC
  Timezone: America/Los_Angeles

Configuration:
  Webhook: not configured
  Email notifications: enabled
  Public: yes

Created: 2026-01-15

create_scout

Create a new monitoring scout for continuous web monitoring. Scouts track changes relevant to a query at a configurable schedule and alert you with structured data.

Basic example:

{
  "query": "Tell me about the latest news, product updates, press releases, social media announcements, investments into, or other relevant information about Yutori"
}

Advanced example (scheduling, webhooks, structured output):

{
  "query": "Tell me about the latest news, product updates, press releases, social media announcements, investments into, or other relevant information about Yutori",
  "output_interval": 86400,
  "user_timezone": "America/Los_Angeles",
  "skip_email": true,
  "webhook_url": "https://example.com/webhook",
  "output_fields": ["headline", "summary", "source_url"]
}

Example response:

Scout created successfully.

Name: Yutori news and updates
ID: 3d1d5e2a-5b6c-4a9c-8f8c-2f2e3b4a5c6d
Status: active

Query: "Tell me about the latest news, product updates, press releases, social..."
Schedule: runs daily
First run: 2026-01-07 03:10 UTC
Parameter Required Description
query Yes Natural language description of what to monitor
output_interval No Seconds between runs (min: 1800). Default: 86400
webhook_url No URL for webhook notifications
webhook_format No scout (default), slack, or zapier
output_fields No List of field names for structured output as array of objects
user_timezone No Timezone for scheduling
skip_email No Skip email notifications
start_timestamp No Unix timestamp for when monitoring should start (0 = immediately)
user_location No Location for geo-relevant searches
is_public No Whether scout results are publicly accessible

edit_scout

Update an existing scout's query, schedule, webhook configuration, or status.

Change status only (pause a scout):

{
  "scout_id": "abc123-...",
  "status": "paused"
}

Update configuration:

{
  "scout_id": "abc123-...",
  "output_interval": 43200,
  "user_timezone": "America/New_York"
}

Update configuration and resume:

{
  "scout_id": "abc123-...",
  "query": "updated monitoring query",
  "status": "active"
}

Example response:

Scout updated successfully.

Name: Yutori API changelog
ID: 7c8692c3-c637-4302-a982-b9f4f7b49407

Changes applied:
  • Status: paused → active
  • Query: "Monitor Yutori API changelog..." → "updated monitoring query"
Parameter Required Description
scout_id Yes Scout UUID
status No active (resume), paused (pause), or done (archive)
query No Updated monitoring query
output_interval No Seconds between runs (min 1800)
webhook_url No Webhook notification URL
webhook_format No scout, slack, or zapier
output_fields No List of field names for structured output
user_timezone No Timezone for scheduling
user_location No Location for geo-relevant searches
skip_email No Skip email notifications

delete_scout

Permanently delete a scout. This cannot be undone.

{
  "scout_id": "abc123-..."
}

Example response:

Scout deleted.

ID: abc123-...

This action cannot be undone.

get_scout_updates

Get paginated updates from a scout.

{
  "scout_id": "690bd26c-0ef8-42f4-99e4-8fca6ea20e6f",
  "limit": 2
}

Example response:

Found 2 update(s):

--- Update #1 —
Date: 2026-01-16 05:45 UTC

Yutori Product Updates

Yutori has released new MCP server tools for web monitoring and browsing automation...

--- Update #2 —
Date: 2026-01-15 05:45 UTC

No new findings since last update.

Research Tools

run_research_task

Execute a one-time deep web research task. The research agent searches, reads, and synthesizes information from across the web.

Basic example:

{
  "query": "What are the latest developments in quantum computing from the past week? Include company announcements, research papers, and product releases."
}

Advanced example (webhooks, structured output):

{
  "query": "What are the latest developments in quantum computing from the past week? Include company announcements, research papers, and product releases.",
  "user_timezone": "America/Los_Angeles",
  "webhook_url": "https://example.com/webhook",
  "output_fields": ["title", "summary", "source_url", "category"]
}

Example response:

Research task started.

Task ID: ae27a17c-a4ed-4c69-8b2a-4bec330fc935-1768848395
Status: queued
View progress: https://scouts.yutori.com/ae27a17c-a4ed-4c69-8b2a-4bec330fc935

Poll with get_research_task_result(task_id="ae27a17c-a4ed-4c69-8b2a-4bec330fc935-1768848395") to check status.
Parameter Required Description
query Yes Natural language description of what to research
user_timezone No Timezone for context. Default: 'America/Los_Angeles'
user_location No Location for context. Default: 'San Francisco, CA, US'
output_fields No List of field names for structured output as array of objects
webhook_url No URL for completion notification
webhook_format No scout (default), slack, or zapier

get_research_task_result

Poll for the status and result of a research task. Call this after run_research_task until status is succeeded or failed.

{
  "task_id": "ae27a17c-a4ed-4c69-8b2a-4bec330fc935-1768848395"
}

Example response (running):

Task in progress.

Task ID: ae27a17c-a4ed-4c69-8b2a-4bec330fc935-1768848395
Status: running

Poll again in a few seconds.

Example response (succeeded):

Task completed.

Task ID: ae27a17c-a4ed-4c69-8b2a-4bec330fc935-1768848395
Status: succeeded

Result:
Hardware strides and strategic moves this week

I focused on notable hardware breakthroughs, leadership changes, applied research,
and an industry appearance from January 12–19, 2026.

• MIT demonstrated chip-based cooling for trapped-ion qubits
• EeroQ unveiled a scalable quantum control chip
• IonQ appointed Katie Arrington as Chief Information Officer
• Researchers introduced QUPID, a quantum neural network

Browsing Tools

run_browsing_task

Execute a one-time web browsing task using the navigator agent. The agent runs a cloud browser and operates it like a person - clicking, typing, scrolling, and navigating for you.

Basic example:

{
  "task": "Give me a list of all employees (names and titles) of Yutori.",
  "start_url": "https://yutori.com"
}

Advanced example (webhooks, structured output):

{
  "task": "Give me a list of all employees (names and titles) of Yutori.",
  "start_url": "https://yutori.com",
  "max_steps": 75,
  "webhook_url": "https://example.com/webhook",
  "output_fields": ["name", "title"]
}

Example response:

Browsing task started.

Task ID: 54fb19fd-277e-4098-ab72-5a9f8a4347fc-1768848396
Status: queued
View progress: https://scouts.yutori.com/54fb19fd-277e-4098-ab72-5a9f8a4347fc

Poll with get_browsing_task_result(task_id="54fb19fd-277e-4098-ab72-5a9f8a4347fc-1768848396") to check status.
Parameter Required Description
task Yes Natural language instruction for the navigator
start_url Yes URL where browsing begins
max_steps No Max browser actions (1-100). Default: 25
output_fields No List of field names for structured output as array of objects
webhook_url No URL for completion notification
webhook_format No scout (default) or slack

get_browsing_task_result

Poll for the status and result of a browsing task. Call this after run_browsing_task until status is succeeded or failed.

{
  "task_id": "54fb19fd-277e-4098-ab72-5a9f8a4347fc-1768848396"
}

Example response (running):

Task in progress.

Task ID: 54fb19fd-277e-4098-ab72-5a9f8a4347fc-1768848396
Status: running

Poll again in a few seconds.

Example response (succeeded):

Task completed.

Task ID: 54fb19fd-277e-4098-ab72-5a9f8a4347fc-1768848396
Status: succeeded

Result:
Summary of All Yutori Employees

I have successfully located all employees of Yutori on their company page.
Here is the complete list of 17 employees with their names and titles:

Founders & Leadership:
1. Abhishek Das - Co-founder and Co-CEO
2. Devi Parikh - Co-founder and Co-CEO
3. Dhruv Batra - Co-founder and Chief Scientist

Executive:
4. Kristi Edleson - Chief of Staff

Technical Staff:
5. Rui Wang - Member of Technical Staff
... (17 employees total)

Source Page: https://yutori.com/company#team

Tool Annotations

Tools include hints for client behavior:

Tool Annotation
list_scouts, get_scout_detail, get_scout_updates, get_browsing_task_result, get_research_task_result readOnlyHint: true
edit_scout idempotentHint: true
delete_scout destructiveHint: true

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)
python -m yutori_mcp.server

Debugging with MCP Inspector

npx @modelcontextprotocol/inspector yutori-mcp

API Documentation

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

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yutori_mcp-0.2.1.tar.gz (643.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yutori_mcp-0.2.1-py3-none-any.whl (23.7 kB view details)

Uploaded Python 3

File details

Details for the file yutori_mcp-0.2.1.tar.gz.

File metadata

  • Download URL: yutori_mcp-0.2.1.tar.gz
  • Upload date:
  • Size: 643.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for yutori_mcp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 3fa2ce781e9c1b767fe2bd2210ffbe6a55f83d7f6342a6cabd632d522834a267
MD5 e2f48b8d54f3965689f338e850a28ae1
BLAKE2b-256 2d22010368e8104b94c14df549d52f838b6084baf623db221e07b544ede25e82

See more details on using hashes here.

File details

Details for the file yutori_mcp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: yutori_mcp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for yutori_mcp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 65f147b526d5eeb55d8310f6f8883d0e9115b46af65c21a69e5e45235538ae0e
MD5 ed986dc71785469ace2c18cbec818012
BLAKE2b-256 4a4e03e3ee6692e76f4c085ad28e1e52bc61e55c33341e790ab85f3b371a42eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page