monid-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@monid-mcpSearch the web for the latest developments in AI agents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Monid MCP Server
MCP server for Monid's TinyFish free web search & fetch API. Exposes web_search and web_extract tools to any MCP-compatible client (Claude Code, Cursor, VS Code, etc.).
TinyFish is 100% free — both search and fetch cost $0/call. No subscriptions, no per-call charges. Just a free Monid account for the API key.
Features
web_search — Search the live web with freshness filtering (60 min - 10 years)
web_extract — Fetch and extract clean Markdown from up to 10 URLs
Free — $0/call, no rate limits
Real content — Returns actual web content, not LLM-generated summaries
JavaScript rendering — Handles SPAs and dynamic content via Chromium
Related MCP server: scrapesearch-mcp
Pricing
Provider | Search cost | Extract cost |
SerpAPI | $25/1K calls | — |
Tavily | $8/1K calls | $0.008/credit |
Exa | $7/1K calls | $1/1K pages |
Brave | $5/1K calls | — |
TinyFish (this server) | $0 | $0 |
Installation
1. Get a Monid API key
Create a free account at app.monid.ai
Go to API Keys and generate a key
Copy the key (shown only once)
2. Install the server
pip install monid-mcpOr install from source:
git clone https://github.com/ashafizullah/monid-mcp.git
cd monid-mcp
pip install -e .3. Configure
Set environment variables:
export MONID_API_KEY="monid_live_..."Or create a .env file:
MONID_API_KEY=monid_live_...
MONID_BASE_URL=https://api.monid.ai
MONID_TIMEOUT=60
MONID_MAX_FETCH_URLS=5Usage with Claude Code
Add to your .claude/settings.json:
{
"mcpServers": {
"monid": {
"command": "monid-mcp",
"env": {
"MONID_API_KEY": "monid_live_..."
}
}
}
}Or use the full path:
{
"mcpServers": {
"monid": {
"command": "python",
"args": ["-m", "monid_mcp.server"],
"env": {
"MONID_API_KEY": "monid_live_..."
}
}
}
}Restart Claude Code. The web_search and web_extract tools will be available automatically.
Usage with Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"monid": {
"command": "monid-mcp",
"env": {
"MONID_API_KEY": "monid_live_..."
}
}
}
}Usage with VS Code (Copilot)
Add to your VS Code settings:
{
"github.copilot.chat.mcpServers": {
"monid": {
"command": "monid-mcp",
"env": {
"MONID_API_KEY": "monid_live_..."
}
}
}
}Tools
web_search
Search the live web via TinyFish.
Parameters:
query(string, required) — Search querylimit(integer, optional) — Max results (1-20, default: 5)recency_minutes(integer, optional) — Freshness window in minutes
Example:
web_search(query="AI agent frameworks 2026", limit=10, recency_minutes=10080)web_extract
Fetch and extract clean Markdown from URLs.
Parameters:
urls(array of strings, required) — URLs to fetch (max 10)
Example:
web_extract(urls=["https://example.com",https://another.com"])Configuration
Variable | Default | Description |
| — | Your Monid API key (required) |
|
| Monid API endpoint |
|
| Request timeout in seconds |
|
| Max URLs per extract call (1-10) |
Running the server directly
# With environment variable
export MONID_API_KEY="monid_live_..."
monid-mcp
# Or with .env file
monid-mcp
# Debug mode
monid-mcp --debugLicense
MIT © Adam Suchi Hafizullah
Available Tools
2 toolsweb_extractA
Fetch and extract clean Markdown content from up to 10 URLs via Monid/TinyFish. Renders JavaScript-heavy pages.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of URLs to fetch (max 10). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully reveals that the tool renders JavaScript-heavy pages and produces clean Markdown, which are meaningful behavioral traits beyond the input schema. It does not mention error handling, redirects, or rate limits, but the core behavior of the tool is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The main purpose and limit are front-loaded, followed by a valuable behavioral note about JavaScript rendering. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description conveys the essential information: what input is expected, what output is produced, and a key capability (JS rendering). The main gap is the lack of explicit guidance about when to use web_extract versus the web_search sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single 'urls' parameter with a clear description. The tool description adds context about output format and rendering behavior but does not add new meaning specific to the URL parameter beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Fetch and extract'), a concrete output format ('clean Markdown content'), and a resource scope ('URLs'). It also distinguishes itself from the sibling tool web_search by focusing on fetching known URLs rather than searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the contrast between web_extract and web_search, but no explicit guidance states when to choose this tool over the alternative. There are no exclusion criteria or conditions such as 'for search queries, use web_search instead'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchA
Search the live web via Monid/TinyFish. Returns ranked results with title, URL, and snippet. Supports freshness filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (1-20). Default: 5. | |
| query | Yes | Search query string. | |
| recency_minutes | No | Optional freshness window in minutes. Only return results published within this window. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and fulfills it well: it discloses that the tool queries a live web source, returns ranked results with a defined shape, and supports a freshness filter. It does not cover rate limits or error behavior, but for a read-only search tool this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct value, with the core action front-loaded. There is no redundant wording or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter search tool with full schema coverage, the description plus schema is sufficient to call it correctly. It lacks an explicit pointer to web_extract, but the output shape is stated and no output schema exists to contradict it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents query, limit, and recency_minutes. The description only gestures at freshness filtering and ranked output, adding little meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Search the live web') and resource, and it clarifies the return shape: ranked results with title, URL, and snippet. It does not explicitly contrast with sibling web_extract, but the search-vs-extract distinction is reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'live web' implies the tool is for current, real-time information needs, and 'search' signals result discovery rather than page content extraction. However, there is no explicit when-to-use guidance or mention of web_extract as the alternative for reading page content.
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.
2 tool updates
v1.0.0- First observed
web_extract - First observed
web_search
TDQS
web_search is for discovering relevant URLs, while web_extract is for pulling content from specific URLs. There is no overlap between the two, and they form a clear complementary pipeline.
Both tools follow the same web_ prefix plus an action verb pattern: web_search and web_extract. The naming is consistent, predictable, and immediately readable.
At two tools, the server feels thin and sits at the borderline end of the scale. However, each tool serves a distinct and necessary purpose for a focused web search and extraction workflow.
The core workflow of searching the web and then extracting readable content from chosen URLs is fully covered. There are no obvious dead ends or missing operations within the apparent scope.
Maintenance
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
Serper MCP — wraps the Serper Google Search API (serper.dev)
MCP server (stdio): fetch web pages as clean readable markdown via the AgentForge API
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Related MCP Servers
- AlicenseAqualityCmaintenanceA lightweight MCP server enabling web search and content fetching via TinyFish Free Access API with support for single and burst URL fetch.3MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that provides web search scraping from DuckDuckGo (with Mojeek fallback) and URL content fetching as markdown/text or raw HTML.1-
- AlicenseAqualityBmaintenanceProvides Google search, URL extraction, and academic paper inline extraction without API keys, enabling search and content retrieval from a single MCP server.52,016MIT
- AlicenseAqualityAmaintenanceAn MCP server that fetches any URL and returns clean Markdown, plus web search with real links.2Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ashafizullah/monid-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server