Skip to main content
Glama
MintOcha

codex-search-mcp

by MintOcha

@mintocha/codex-tools

npm version license

An MCP server and command-line tool for web search, page extraction, finance quotes, weather forecasts, and sports scores, backed by OpenAI's reversed Codex web endpoints.

Runs directly as an MCP server via stdio for Claude Desktop, Cursor, Windsurf, and Oh My Pi, or as a standalone terminal CLI for ad-hoc queries.

Quick start

Log in once

If you use a ChatGPT or Codex subscription, authenticate via the device code flow:

npx @mintocha/codex-tools login

The CLI prints a verification link and a one-time code. Once approved in your browser, the OAuth tokens are saved to ~/.codex/auth.json (chmod 600) and refreshed automatically before expiration.

Run commands directly

# Web search
npx @mintocha/codex-tools search "TypeScript 5.8 release notes"

# Fetch readable webpage text
npx @mintocha/codex-tools fetch "https://nodejs.org"

# Market quotes
npx @mintocha/codex-tools finance NVDA
npx @mintocha/codex-tools finance BTC crypto

# Weather
npx @mintocha/codex-tools weather "Tokyo" --days 3

# Sports scores and schedules
npx @mintocha/codex-tools sports nba standings
npx @mintocha/codex-tools sports epl schedule --team "Arsenal"

# UTC time
npx @mintocha/codex-tools time "+08:00"

Append --json to any command for structured JSON output.

Run as an MCP server

Start the stdio transport directly:

npx -y @mintocha/codex-tools

Or install globally to keep codex-tools on your PATH:

npm install -g @mintocha/codex-tools
codex-tools search "Postgres 17 changes"

Related MCP server: io.github.MRNAQA/sourceweave-web-search

CLI reference

Command

Description

search <query> [--max <n>]

Search the web and return titles, URLs, and snippets

fetch <url> [--line <n>]

Extract cleaned markdown/text from a webpage URL

finance <ticker> [type]

Look up quotes (equity, fund, crypto, index)

weather <location> [--days <n>]

Fetch current weather and multi-day forecasts

sports <league> [type]

Look up schedules or standings (nba, epl, nfl, mlb)

time <utc_offset>

Resolve current time for an offset like +08:00 or -05:00

image-search <query> [--days <n>]

Search images with optional recency bounds

login

Interactive OAuth device flow saving to ~/.codex/auth.json

server

Run the stdio MCP server (default when invoked without args)

--help

Show command list and options

MCP client configuration

Add @mintocha/codex-tools to your client configuration file. If you already ran npx @mintocha/codex-tools login or have an existing ~/.codex/auth.json, you do not need to pass an API key in the environment.

Claude Desktop

File locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "codex-tools": {
      "command": "npx",
      "args": ["-y", "@mintocha/codex-tools"]
    }
  }
}

If authenticating with an API key instead of OAuth:

{
  "mcpServers": {
    "codex-tools": {
      "command": "npx",
      "args": ["-y", "@mintocha/codex-tools"],
      "env": {
        "CODEX_API_KEY": "your_key_here"
      }
    }
  }
}

Cursor

Under Settings > Features > MCP > Add New MCP Server:

  • Name: codex-tools

  • Type: command

  • Command: npx -y @mintocha/codex-tools

Windsurf

In ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "codex-tools": {
      "command": "npx",
      "args": ["-y", "@mintocha/codex-tools"]
    }
  }
}

Oh My Pi (OMP)

In ~/.omp/agent/mcp.toml:

[mcpServers.codex-tools]
command = "npx"
args = ["-y", "@mintocha/codex-tools"]

Available tools

When connected as an MCP server, the following tools are exposed over JSON-RPC:

Tool

Parameters

Output

web-search

query (string, required), max_results (integer, 1–25, default 10)

JSON list of { title, url, snippet } objects

fetch

urls (string array, required)

Clean text/markdown for each requested URL

open-page

ref_id (string, required), lineno (integer, optional)

Page text positioned at the specified line

click-link

ref_id (string, required), link_id (integer, required)

Target page text from following a numbered reference link

find-in-page

ref_id (string, required), pattern (string, required)

Matched pattern occurrences and surrounding context

screenshot-pdf

ref_id (string, required), pageno (integer, required, 0-indexed)

Rendered image output of the PDF page

image-search

query (string, required), recency_days (integer), domains (string array)

JSON list of image search matches

finance

ticker (string, required), asset_type (equity | fund | crypto | index)

Current market price, change, volume, and company details

weather

location (string, required), start_date (string), duration_days (integer)

Weather conditions and temperature forecast

sports

league (string, required), fn (schedule | standings), team (string)

Scores, upcoming fixtures, or current table

world-time

utc_offset (string, required, e.g. +08:00 or -05:00)

Current ISO and formatted time for the given offset

Authentication order

The client checks credential sources in this order:

  1. CODEX_API_KEY or OPENAI_API_KEY environment variables.

  2. ~/.omp/agent/web.toml (extracts api_keys and base_url if present).

  3. ~/.codex/auth.json (created by npx @mintocha/codex-tools login or the Codex CLI; auto-refreshes expired access tokens).

To route requests through a custom proxy:

export CODEX_BASE_URL="https://litellm.v-rail.org/v1"

Testing over stdio

You can test the server locally with an initialize JSON-RPC handshake:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"tester","version":"1.0.0"}}}' | npx -y @mintocha/codex-tools

Expected reply:

{"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{"listChanged":true}},"serverInfo":{"name":"codex-tools","version":"1.1.0"}},"jsonrpc":"2.0","id":1}

Development

git clone https://github.com/MintOcha/codex-tools.git
cd codex-tools
npm install
npm run build
npm test

License

MIT

Available Tools

11 tools
fetchC

Fetch readable page content for given URLs using Codex native page extraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesList of URLs to fetch readable content from

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It implies a read-only extraction ('readable page content', 'native page extraction'), which is useful, but says nothing about batch size limits, handling of non-HTML/JS-heavy pages, error behavior, or whether content is truncated.

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?

One tight sentence with the verb and resource front-loaded and no filler. It is efficient, though it leaves no room for the routing guidance the agent actually needs.

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?

For a single-parameter, no-output-schema utility this is minimally adequate: the core operation is stated. Missing is any differentiation from similar retrieval siblings and any note on limits or edge cases, which matters given the crowded sibling set.

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 100% for the single 'urls' array parameter, so the schema already documents format and meaning. The description's plural 'URLs' matches the array but adds no syntax or constraint detail beyond the schema.

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?

States a specific verb (Fetch) and resource (readable page content for given URLs), which is clear on its own. However, it never differentiates itself from the sibling 'open-page' or 'click-link', so an agent cannot tell from this text alone which page-retrieval tool to pick.

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?

There is no indication of when to use this versus 'open-page', 'click-link', or 'web-search', nor any prerequisites or exclusions. Usage must be inferred entirely by the agent.

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

financeC

Look up financial quotes for a given ticker (type: equity, fund, crypto, index).

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoOptional market exchange
tickerYesTicker symbol (e.g. NVDA, AAPL, BTC)
asset_typeNoAsset categoryequity

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose quote freshness (real-time vs delayed), market-hours behavior, rate limits, or failure modes for invalid tickers — all material for a financial quote tool.

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?

One efficient sentence with the core action front-loaded and the parenthetical scope qualifier tacked on. No filler, though the enum repetition is marginally redundant with the schema.

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?

For a simple three-parameter read tool with a fully documented schema and no output schema, the description is minimally adequate. It still leaves the agent without quote-freshness or output-shape expectations, which matters for financial data.

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 description coverage is 100%, so the baseline is 3. The description restates the asset_type enum values (equity, fund, crypto, index) and the ticker concept but adds no meaning beyond the schema and completely omits the 'market' parameter.

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?

States a specific verb ('look up') and resource ('financial quotes') plus the accepted asset categories, so an agent can tell it apart from unrelated siblings like weather or web-search. It is clear but does not name or contrast with any sibling explicitly, so it stops short of a 5.

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 when-to-use guidance, no prerequisites, no alternatives. It never says when a quote lookup is appropriate versus general web search for financial data, which a generic name like 'finance' invites confusion about.

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

find-in-pageC

Find text pattern in page indicated by ref_id or URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
ref_idYesURL or page reference ID
patternYesRegex or text pattern to locate

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but provides little behavioral context. It doesn't state whether the search is case-sensitive, how matches are returned (e.g., list of locations), or if it's read-only. Only basic purpose is conveyed.

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, efficient sentence that front-loads the core action. No wasted 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?

For a tool with no annotations and no output schema, the description is too sparse. It doesn't explain return values, behavior on no matches, or how it differs from similar sibling tools, leaving significant gaps.

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 100%, so the schema already documents both parameters (ref_id and pattern). The description mentions 'text pattern' and 'ref_id or URL' but adds no extra meaning beyond the schema, making baseline 3 appropriate.

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 states a specific verb and resource: finding text patterns in a page identified by ref_id or URL. It's clear what the tool does, though it doesn't differentiate itself from siblings like fetch or open-page beyond the text-finding aspect.

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?

There is no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., page must be loaded) or exclusions, leaving the agent to infer usage.

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

open-pageB

Open the page indicated by ref_id or URL and position viewport at line lineno.

ParametersJSON Schema
NameRequiredDescriptionDefault
linenoNoLine number to position viewport at
ref_idYesURL or page reference ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a viewport/browser context via 'position viewport at line lineno', which is a useful hint, but it says nothing about side effects, whether navigation replaces the current page, or any permission requirements.

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?

A single front-loaded sentence with no filler; the action, target, and the optional lineno behavior are all stated compactly.

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?

For a simple two-parameter tool with no output schema, the description covers the mechanics adequately. However, it omits the provenance of ref_id and its relationship to sibling page-navigation tools, which an agent needs to invoke it correctly in sequence.

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 description coverage is 100%, so both parameters are already documented in the schema. The description restates the same semantics (ref_id as URL/reference, lineno as viewport target) without adding format details such as whether ref_id must be a search-result handle.

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 states a specific verb ('Open') and resource ('the page indicated by ref_id or URL') and adds the viewport-positioning behavior, so an agent knows exactly what action is taken. It stops short of distinguishing this from siblings like 'fetch' or 'click-link', which could plausibly also retrieve page content.

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?

There is no indication of when to prefer this over 'fetch', 'web-search', or 'click-link', nor any prerequisites (e.g. that ref_id typically comes from a prior search). Usage context is left entirely to inference.

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

screenshot-pdfC

Take a screenshot of page pageno (0-indexed) indicated by ref_id or URL (works on PDFs).

ParametersJSON Schema
NameRequiredDescriptionDefault
pagenoYes0-indexed page number
ref_idYesPDF URL or reference ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it says nothing about the return type (image bytes, URL, base64), required permissions, rate limits, or whether rendering large pages is expensive. Only the 0-indexing convention and PDF support are disclosed.

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?

A single compact sentence with the operation front-loaded and the key constraint (0-indexed, PDF support) parenthetically noted. No filler, though the phrasing 'page pageno' is slightly awkward.

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?

No output schema and no annotations means the description should explain what a screenshot call returns and any page-state preconditions, but it omits both. An agent cannot tell whether the result is an image blob or a link, nor how ref_id is obtained.

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 100%, so both pageno (0-indexed) and ref_id (PDF URL or reference ID) are already fully documented in the schema. The description restates the same facts rather than adding format examples or constraints, so baseline 3 applies.

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 states a concrete verb (take a screenshot) and a specific resource scope (a single PDF page identified by ref_id or URL). It distinguishes the operation from generic page tools by noting it works on PDFs, though it does not name which sibling to prefer.

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?

There is no guidance on when to choose this over siblings like open-page, fetch, or find-in-page, nor any prerequisite (e.g., must the PDF be opened/fetched first, where does ref_id come from). Usage must be inferred entirely.

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

sportsB

Look up sports schedules and standings (league: nba, wnba, nfl, nhl, mlb, epl, ncaamb, ncaawb, ipl; fn: schedule or standings).

ParametersJSON Schema
NameRequiredDescriptionDefault
fnNoQuery type: schedule or standingsschedule
teamNoOptional team filter
leagueYesLeague code (e.g. nba, epl, nfl)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about data freshness, whether results are live or cached, rate limits, or the shape of the response. It discloses only the valid input domains (leagues, fn values).

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?

A single dense sentence, front-loaded with the action and resource, with the enumerated values tucked into a parenthetical. No filler, though the packed parenthetical makes it slightly harder to scan than a structured breakdown.

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?

For a 3-parameter read tool with a required league, no output schema, and no annotations, the description covers the input contract adequately but omits what a response contains, whether team filtering applies to standings as well as schedules, and any data-source or freshness context.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds value by enumerating the full set of nine accepted league codes and the two fn values, whereas the schema only samples 'e.g. nba, epl, nfl'. This materially reduces the chance of an invalid league value being passed.

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 gives a specific verb ('look up') and resources ('sports schedules and standings'), plus the exact league codes and query types, which rescues the otherwise-vague tool name 'sports'. It does not distinguish itself from siblings like web-search or finance, but the resource is unambiguous once read.

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?

There is no statement of when to use this tool versus alternatives such as web-search or open-page, and no prerequisites or exclusions. Usage is only inferable from the enumerated leagues and fn values, leaving the agent to guess why it should not simply search the web for a score.

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

weatherC

Look up weather forecast for location (e.g. 'City, Country').

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYesLocation name, city, or coordinates
start_dateNoStart date (YYYY-MM-DD)
duration_daysNoDuration in days

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says to look up a forecast but does not state whether the operation is read-only, what data source or coverage is used, how location resolution works, or what the return format looks like, leaving key behavioral traits opaque.

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, front-loaded sentence with no wasted words. The example is embedded efficiently and nothing distracts from the core purpose.

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?

For a tool with no annotations and no output schema, the description is too minimal. It omits what the forecast includes, how start_date and duration_days shape the result, and when an agent should prefer this over web-search or other siblings.

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 description coverage is 100%, so all three parameters are already documented in the input schema. The description adds a helpful example format ('City, Country') for the location parameter, but it adds no further meaning for start_date or duration_days, making the baseline 3 appropriate.

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 states a specific verb ('Look up') and resource ('weather forecast'), making the tool's purpose immediately clear. It does not, however, explicitly distinguish this tool from siblings like web-search or world-time, so it stops short of the highest clarity tier.

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?

The description offers no guidance on when to use this tool versus alternatives such as web-search, nor does it state any preconditions or exclusions. Usage is only implied by the phrase 'Look up weather forecast for location,' which is not enough for explicit routing guidance.

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

world-timeB

Get current time for UTC offset (e.g. '+08:00' or '-05:00').

ParametersJSON Schema
NameRequiredDescriptionDefault
utc_offsetYesUTC offset string (e.g. '+08:00' or '-05:00')

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a non-destructive read of 'current time', but discloses nothing about the return format, whether a date is included, or any locality/timezone semantics. Only the most obvious trait is conveyed.

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?

One sentence, front-loaded with the action and immediately followed by the required input format. No filler, no restated title, nothing that fails to earn 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?

For a single-parameter, schema-complete tool with no output schema, the description is adequate but leaves the response shape undefined (time only? offset echo? date?). It does usefully clarify that the input is an offset rather than a place name, which is the main ambiguity.

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 description coverage is 100% and the single parameter is fully documented there. The description repeats the same '+08:00' / '-05:00' example verbatim, adding no syntax, validation, or edge-case detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Get current time') plus the exact input shape (UTC offset), so the agent knows precisely what the tool yields. It does not need sibling differentiation since no sibling in the list (weather, finance, sports, web-search) overlaps with time lookup.

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?

Usage is only implied: the offset example suggests the tool is for looking up the time at a given offset rather than at a named city or timezone. There is no explicit when-to-use guidance, no statement of when this is preferable to alternatives, and no exclusions.

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.

  1. 11 tool updatesv1.0.0
    • First observedclick-link
    • First observedfetch
    • First observedfinance
    • First observedfind-in-page
    • First observedimage-search
    • First observedopen-page
    • First observedscreenshot-pdf
    • First observedsports
    • First observedweather
    • First observedweb-search
    • First observedworld-time

TDQS

B3.2/5.0

Scored across 11 tools

Disambiguation4/5

The lookup tools (finance, weather, sports, world-time) are clearly distinct from each other and from the search tools. The browsing cluster (web-search, fetch, open-page, click-link, find-in-page, screenshot-pdf) is mostly separable by action, but fetch vs open-page overlap in that both take a URL and return page content, which could cause misselection.

Naming Consistency3/5

Verbs use a hyphenated verb_noun pattern (web-search, open-page, click-link, find-in-page, image-search), but there are deviations: bare 'fetch', the hyphen-only 'screenshot-pdf', and noun-only tools (finance, weather, sports, world-time). Readable but not a single predictable convention.

Tool Count4/5

11 tools is within a reasonable range for a combined web-search and lookup server. The six browsing tools feel somewhat heavy for page interaction, but each covers a distinct capability and nothing is clearly redundant.

Completeness4/5

Core search and browsing coverage is solid: search, content fetch, open, link navigation, in-page find, screenshot, and image search. The domain lookups round out common queries; there are minor gaps (e.g. no news/translation tools) but these are workable via web-search.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    Enables web search and anonymous public-page retrieval through MCP, with provider-neutral selection, bounded plain-text results, and built-in auditing.
    2
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to perform keyless web searches, extract fully rendered pages into clean Markdown, and automate a shared Chrome browser through page navigation, clicking, typing, reading, screenshots, and backtracking—all without API keys.
    MIT