browse-ai
This server provides AI-powered web research tools for grounded intelligence, enabling real-time search, evidence extraction, and verified answers with citations.
browse_search— Search the web for a topic, returning URLs, titles, snippets, and relevance scores.browse_open— Fetch and parse any web page into clean, readable text, stripping ads, navigation, and boilerplate.browse_extract— Extract structured knowledge (claims, sources, confidence scores) from a web page using AI.browse_answer— Run a full deep research pipeline: search the web, fetch pages, extract claims, build an evidence graph, and return a structured answer with citations and a confidence score. Supports fast, thorough, and deep research modes.browse_compare— Compare a raw LLM answer (no sources) against an evidence-backed answer to highlight hallucination-prone vs. grounded responses.
LastSearch
Research infrastructure for AI agents with Grounded Intelligence — real-time web search, evidence extraction, verification, and structured citations. Every claim is backed by a URL. Every answer has a confidence score.
Agent → LastSearch → Internet → Verified answers + sourcesWebsite · Playground · API Docs · Alternatives · Discord
Package names: npm:
lastsearch· PyPI:lastsearch· LangChain:langchain-lastsearch— Previouslylastsearchandlastsearch. Old names still work and redirect automatically.
How It Works
search → fetch pages → neural rerank → extract claims → verify → cited answer (streamed)Every answer goes through a multi-step verification pipeline. No hallucination. Every claim is backed by a real source.
Verification & Confidence Scoring
Confidence scores are evidence-based — not LLM self-assessed. After the LLM extracts claims and sources, a post-extraction verification engine checks every claim against the actual source page text:
Atomic claim decomposition — Compound claims are auto-split into individual verifiable facts. "Tesla had $96B revenue and 1.8M deliveries" becomes two atomic claims, each verified independently.
Hybrid retrieval combining keyword and semantic matching — For each claim, keyword matching finds lexical matches and dense embeddings find semantic matches from source text. Rankings are fused to catch paraphrased evidence that keyword matching alone misses (e.g., "prevents fabricated answers" matching "reduces hallucinations"). Premium tier only, with graceful keyword-only fallback.
Semantic evidence reranking — Top candidates per claim are reranked by a purpose-built verification model trained on 1.4M+ claim-evidence pairs that improves with every query. Selects the best supporting evidence, applies contradiction penalties and paraphrase boosts.
Multi-provider search — Parallel search across multiple providers for broader source diversity. More independent sources = stronger cross-reference = higher confidence.
Domain authority scoring — 10,000+ domains across 5 tiers (institutional
.gov/.edu→ major news → tech journalism → community → low-quality). Dynamic scoring that improves from real verification data.Source quote verification — LLM-extracted quotes verified against actual page text using multi-strategy matching.
Cross-source consensus — Each claim verified against all available page texts. Claims supported by 3+ independent domains get "strong consensus". Single-source claims flagged as "weak".
Contradiction detection — Claim pairs analyzed for semantic conflicts using topic overlap and contradiction classification. Detected contradictions surfaced in the response and penalize confidence.
Multi-pass consistency — In thorough mode, claims are cross-checked across independent extraction passes. Claims confirmed by both passes get boosted; inconsistent claims are penalized.
Auto-calibrated confidence — Multi-factor confidence formula auto-adjusts from real user feedback. Predicted confidence aligns with actual accuracy over time. Factors: verification rate, domain authority, source count, consensus, domain diversity, claim grounding, source recency, and citation depth.
Per-claim evidence retrieval — Weak claims get targeted search queries generated by LLM, then searched individually across all providers. Each claim gets its own evidence pool instead of sharing the same corpus.
Counter-query verification — Verified claims are stress-tested with adversarial "what would disprove this?" search queries. If counter-evidence is found, claim confidence is penalized.
Iterative confidence-gated retrieval — Thorough mode uses a confidence-gated loop: verify → if weak claims remain → generate targeted query → search → re-verify. Loops up to 3 iterations with early termination when queries repeat or confidence meets threshold.
Claims include verified, verificationScore, consensusCount, and consensusLevel fields. Sources include verified and authority. Detected contradictions are returned at the top level. Agents can use these fields to make trust decisions programmatically.
Graceful fallback: When premium keys are not set, the system runs keyword-only verification. Semantic retrieval and reranking are transparent premium enhancements — no degradation, no errors.
Depth Modes
Three depth levels control research thoroughness:
Depth | Behavior | Use case |
| Single search → extract → verify pass | Quick lookups, real-time agents |
| Iterative confidence-gated loop (up to 3 passes), per-claim evidence retrieval, counter-query verification, multi-pass consistency checking | Important research, fact-checking |
| Premium multi-step agentic research: iterative think-search-extract-evaluate cycles (up to 4 total steps). Gap analysis identifies missing info, generates follow-up queries. Claims/sources merged across steps with final re-verification. Target confidence: 0.85. Requires LastSearch key + sign-in. Falls back to thorough when quota exhausted. | Complex research questions, comprehensive analysis |
# Thorough mode
curl -X POST https://lastsearch.ai/api/browse/answer \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ls_xxx" \
-d '{"query": "What is quantum computing?", "depth": "thorough"}'
# Deep mode (uses premium features)
curl -X POST https://lastsearch.ai/api/browse/answer \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ls_xxx" \
-d '{"query": "Compare CRISPR approaches for sickle cell disease", "depth": "deep"}'Deep mode runs iterative think-search-extract-evaluate cycles: each step performs gap analysis to identify what's missing, generates targeted follow-up queries, and merges claims/sources across steps with a final re-verification pass. It targets a confidence threshold of 0.85 (DEEP_CONFIDENCE_THRESHOLD) and runs up to 3 follow-up steps (MAX_FOLLOW_UP_STEPS, 4 total including the initial pass). Uses semantic reranking, multi-provider search, and multi-pass consistency. Each deep query costs 3x quota (100 deep queries/day). When quota is exhausted, deep mode gracefully falls back to thorough. Without a LastSearch key, deep mode also falls back to thorough.
Deep mode responses include reasoningSteps showing the multi-step research process (step number, query, gap analysis, claim count, confidence per step).
Streaming API
Get real-time progress with per-token answer streaming. The streaming endpoint sends Server-Sent Events (SSE) as each pipeline step completes. Deep mode steps are grouped by research pass for clean progress display:
curl -N -X POST https://lastsearch.ai/api/browse/answer/stream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ls_xxx" \
-d '{"query": "What is quantum computing?"}'Events: trace (progress), sources (discovered early), token (streamed answer text), result (final answer), done.
Retry with Backoff
All external API calls (search providers, LLM, page fetching) automatically retry on transient failures (429 rate limits, 5xx server errors) with exponential backoff and jitter. Auth errors (401/403) fail immediately — no wasted retries.
Research Memory (Sessions)
Persistent research sessions that accumulate knowledge across multiple queries. Later queries automatically recall prior verified claims, building deeper understanding over time.
Sessions require a LastSearch API key (
ls_xxx) for identity and ownership. Get a free key at lastsearch.ai/dashboard. For MCP, setLASTSEARCH_API_KEYenv var. For Python SDK, passapi_key="ls_xxx". For REST API, useAuthorization: Bearer ls_xxx.
# Python SDK
session = client.session("quantum-research")
r1 = session.ask("What is quantum entanglement?") # 13 claims stored
r2 = session.ask("How is entanglement used in computing?") # 12 claims recalled!
knowledge = session.knowledge() # Export all accumulated claims
# Share with other agents or humans
share = session.share() # Returns shareId + URL
# Another agent forks and continues the research
forked = client.fork_session(share.share_id)# REST API
curl -X POST https://lastsearch.ai/api/session \
-H "Authorization: Bearer ls_xxx" \
-d '{"name": "my-research"}'
# Returns session ID, then:
curl -X POST https://lastsearch.ai/api/session/{id}/ask \
-H "Authorization: Bearer ls_xxx" \
-d '{"query": "What is quantum entanglement?"}'
# Share a session publicly
curl -X POST https://lastsearch.ai/api/session/{id}/share \
-H "Authorization: Bearer ls_xxx"
# Fork a shared session (copies all knowledge)
curl -X POST https://lastsearch.ai/api/session/share/{shareId}/fork \
-H "Authorization: Bearer ls_xxx"Each session response includes recalledClaims and newClaimsStored. Sessions can be shared publicly and forked by other agents — enabling collaborative, multi-agent research workflows.
Query Planning
Complex queries are automatically decomposed into focused sub-queries with intent labels (definition, evidence, comparison, counterargument, technical, historical). Each sub-query targets a different aspect of the question, maximizing source diversity. Simple factual queries skip planning entirely — no added latency.
Self-Improving Accuracy
The entire verification pipeline improves automatically with usage:
Domain authority — Dynamic scoring adjusts domain trust scores as evidence accumulates. Static tier scores dominate initially, then real verification rates take over.
Adaptive verification thresholds — Claim verification thresholds tune per query type based on observed verification rates. Too strict? Loosens up. Too lenient? Tightens.
Consensus threshold tuning — Cross-source agreement thresholds adapt based on query type performance.
Confidence weight optimization — The multi-factor confidence formula rebalances weights per query type when user feedback indicates inaccuracy.
Page count optimization — Source fetch counts adjust based on confidence outcomes per query type.
Feedback Loop
Submit feedback on results to accelerate learning. Agents and users can rate results as good, bad, or wrong — this feeds directly into the adaptive threshold engine.
curl -X POST https://lastsearch.ai/api/browse/feedback \
-H "Content-Type: application/json" \
-d '{"resultId": "abc123", "rating": "good"}'client.feedback(result_id="abc123", rating="good")
# Or flag a specific wrong claim:
client.feedback(result_id="abc123", rating="wrong", claim_index=2)Related MCP server: Nexus MCP Server
Quick Start
Python SDK
pip install lastsearchfrom lastsearch import LastSearch
client = LastSearch(api_key="ls_xxx")
# Research with citations
result = client.ask("What is quantum computing?")
print(result.answer)
print(f"Confidence: {result.confidence:.0%}")
for source in result.sources:
print(f" - {source.title}: {source.url}")
# Thorough mode — auto-retries if confidence < 60%
thorough = client.ask("What is quantum computing?", depth="thorough")
# Deep mode — multi-step reasoning with gap analysis (requires LastSearch key)
deep = client.ask("Compare CRISPR approaches for sickle cell disease", depth="deep")
for step in deep.reasoning_steps or []:
print(f" Step {step.step}: {step.query} ({step.confidence:.0%})")LangChain integration: (PyPI)
pip install langchain-lastsearchfrom langchain_lastsearch import LastSearchAnswerTool, LastSearchSearchTool
# Use with any LangChain agent
tools = [
LastSearchAnswerTool(api_key="ls_xxx"), # Verified search with citations
LastSearchSearchTool(api_key="ls_xxx"), # Basic web search
]
# Standalone usage
tool = LastSearchAnswerTool(api_key="ls_xxx")
result = tool.invoke({"query": "What is quantum computing?", "depth": "thorough"})5 tools available: LastSearchSearchTool, LastSearchAnswerTool (verified), LastSearchExtractTool, LastSearchCompareTool, LastSearchClarityTool (anti-hallucination).
MCP Server (Claude Desktop, Cursor, Windsurf)
npx lastsearch setupOr manually add to your MCP config:
{
"mcpServers": {
"lastsearch": {
"command": "npx",
"args": ["-y", "lastsearch"],
"env": {
"LASTSEARCH_API_KEY": "ls_xxx"
}
}
}
}Get a free API key at lastsearch.ai/dashboard.
REST API
# Basic query
curl -X POST https://lastsearch.ai/api/browse/answer \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ls_xxx" \
-d '{"query": "What is quantum computing?"}'
# Thorough mode (auto-retries if confidence < 60%)
curl -X POST https://lastsearch.ai/api/browse/answer \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ls_xxx" \
-d '{"query": "What is quantum computing?", "depth": "thorough"}'
# Deep mode (multi-step reasoning)
curl -X POST https://lastsearch.ai/api/browse/answer \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ls_xxx" \
-d '{"query": "Compare CRISPR approaches", "depth": "deep"}'Self-Host
The MCP server and frontend are open-source and can be run locally. The verification engine is a hosted service — all API requests are processed by the LastSearch cloud infrastructure.
git clone https://github.com/lastsearch-hq/lastsearch.git
cd lastsearch
pnpm install
pnpm dev:web # Run the frontend locally (API calls go to lastsearch.ai)API Keys
All API access requires a LastSearch API key (ls_xxx). Sign up for free at lastsearch.ai/dashboard.
Method | How | Verification | Limits |
LastSearch API Key (Free) |
| Full premium — semantic verification, multi-provider, multi-pass consistency | Generous quota with graceful fallback |
LastSearch API Key (Pro) |
| Full premium — unlimited, no fallback | Unlimited + priority queue, managed keys, team seats |
Demo (website) | No auth needed | Keyword verification | 1 query/hour per IP |
The free tier includes 100 premium queries/day (or ~33 deep queries/day at 3x cost each). When the quota is reached, queries gracefully fall back to keyword verification (or deep falls back to thorough) — still works, just basic matching. Quota resets every 24 hours. Pro removes all limits.
API responses include quota info when using a LastSearch key:
{
"success": true,
"result": { ... },
"quota": { "used": 12, "limit": 100, "premiumActive": true }
}Project Structure
/apps/mcp MCP server (stdio transport, npm: lastsearch)
/packages/shared Shared types, Zod schemas, constants
/packages/python-sdk Python SDK (PyPI: lastsearch)
/src React frontend (Vite, port 8080)
/supabase Database migrationsThe verification engine (API server) is in a separate private repository (lastsearch-hq/lastsearch-engine) and runs as a hosted service.
API Endpoints
Endpoint | Description |
| Search the web |
| Fetch and parse a page |
| Extract structured claims from a page |
| Full pipeline: search + extract + cite. |
| Streaming answer via SSE — real-time token streaming + progress events |
| Compare raw LLM vs evidence-backed answer |
| Clarity — anti-hallucination answer engine. Three modes: |
| Get a shared result |
| Total queries answered |
| Top cited source domains |
| Usage analytics (authenticated) |
| Create a research session |
| Research with session memory (recalls + stores claims) |
| Query session knowledge without new search |
| Export all session claims |
| Share a session publicly (returns shareId) |
| View a shared session (public, no auth) |
| Fork a shared session into your account |
| Get session details |
| List your sessions (authenticated) |
| Delete a session (authenticated) |
| Submit feedback on a result (good/bad/wrong) |
| Self-learning engine stats |
| Your query stats (authenticated) |
| Your query history (authenticated) |
| Delete all your data (GDPR right to erasure) |
MCP Tools
Tool | Description |
| Search the web for information on any topic |
| Fetch and parse a web page into clean text |
| Extract structured claims from a page |
| Full pipeline: search + extract + cite. |
| Compare raw LLM vs evidence-backed answer |
| Anti-hallucination answer engine — three modes: prompt (prompts only), answer (LLM), verified (LLM + web fusion) |
| Create a research session (persistent memory) |
| Research within a session (recalls prior knowledge) |
| Query session knowledge without new web search |
| Share a session publicly (returns share URL) |
| Export all claims from a session |
| Fork a shared session to continue the research |
| Submit feedback on a result to improve accuracy |
Python SDK
Method | Description |
| Search the web |
| Fetch and parse a page |
| Extract claims from a page |
| Full pipeline with citations. |
| Raw LLM vs evidence-backed |
| Create a research session |
| Research with memory recall |
| Query session knowledge |
| Export all session claims |
| Share session publicly (returns shareId + URL) |
| Resume an existing session by ID |
| List all your sessions |
| Fork a shared session into your account |
| Delete a session |
| Submit feedback (good/bad/wrong) to improve accuracy |
Async support: AsyncLastSearch with the same API.
Enterprise Search Providers
Use LastSearch with your own data sources instead of — or alongside — public web search. Supports Elasticsearch, Confluence, and custom endpoints with optional zero data retention for compliance.
# Elasticsearch
result = client.ask("What is our refund policy?", search_provider={
"type": "elasticsearch",
"endpoint": "https://es.internal.company.com/kb/_search",
"authHeader": "Bearer es-token-xxx",
"index": "docs",
})
# Confluence
result = client.ask("PCI compliance process?", search_provider={
"type": "confluence",
"endpoint": "https://company.atlassian.net/wiki/rest/api",
"authHeader": "Basic base64-creds",
"spaceKey": "ENG",
})
# Zero data retention (nothing stored, cached, or logged)
result = client.ask("Patient protocols", search_provider={
"type": "elasticsearch",
"endpoint": "https://es.hipaa.company.com/medical/_search",
"authHeader": "Bearer token",
"dataRetention": "none",
})# REST API — enterprise search
curl -X POST https://lastsearch.ai/api/browse/answer \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ls_xxx" \
-d '{
"query": "What is our refund policy?",
"searchProvider": {
"type": "elasticsearch",
"endpoint": "https://es.internal.company.com/kb/_search",
"authHeader": "Bearer es-token-xxx",
"index": "docs"
}
}'Response Structure
Every answer includes structured fields for programmatic trust decisions:
{
"answer": "Quantum computing uses qubits...",
"confidence": 0.82,
"shareId": "abc123def456",
"effectiveDepth": "thorough",
"claims": [
{
"claim": "Qubits can exist in superposition",
"sources": ["https://en.wikipedia.org/wiki/Qubit"],
"verified": true,
"verificationScore": 0.87,
"consensusCount": 3,
"consensusLevel": "strong"
}
],
"sources": [
{
"url": "https://en.wikipedia.org/wiki/Qubit",
"title": "Qubit - Wikipedia",
"domain": "en.wikipedia.org",
"quote": "A qubit is the basic unit of quantum information...",
"verified": true,
"authority": 0.70
}
],
"contradictions": [
{
"claimA": "Quantum computers are faster for all tasks",
"claimB": "Quantum advantage only applies to specific problems",
"topic": "quantum computing performance",
"nliConfidence": 0.89
}
],
"reasoningSteps": [
{ "step": 1, "query": "quantum computing basics", "gapAnalysis": "Initial research pass", "claimCount": 8, "confidence": 0.65 },
{ "step": 2, "query": "quantum computing vs classical comparison", "gapAnalysis": "Missing classical vs quantum comparison", "claimCount": 14, "confidence": 0.82 }
],
"trace": [
{ "step": "Search Web", "duration_ms": 423, "detail": "5 results" },
{ "step": "Fetch Pages", "duration_ms": 1205, "detail": "4 pages" }
],
"quota": { "used": 12, "limit": 50, "premiumActive": true }
}Key fields:
confidence— evidence-based score (0-1), not LLM self-assessedshareId— unique ID for sharing this result (use with/browse/share/:id)effectiveDepth— actual depth used ("fast","thorough", or"deep") — may differ from requested depth due to fallbackclaims[].verified— whether the claim was verified against source textclaims[].consensusLevel—"strong"(3+ sources),"moderate", or"weak"contradictions— detected conflicts between claims (with confidence score)reasoningSteps— deep mode only: multi-step research iterations with gap analysistrace— execution timeline for debugging and monitoringquota— premium quota usage (LastSearch key users only):used,limit,premiumActive
Examples
See the examples/ directory for ready-to-run agent recipes:
Agent Recipes
Example | Description |
Simple research agent with citations | |
Multi-step deep reasoning with gap analysis | |
Real-time SSE streaming with progress events | |
Surface contradictions across sources | |
Custom data sources + zero retention mode | |
Research libraries/docs before writing code | |
Compare raw LLM vs evidence-backed answers | |
LastSearch as a LangChain tool | |
Multi-agent research team with CrewAI | |
Research sessions with persistent memory |
Tutorials
Tutorial | What You'll Build |
Agent that researches before writing code — never recommends deprecated libraries | |
Agent that verifies answers before responding — escalates when confidence is low | |
Agent that writes blog posts where every stat has a citation | |
Discord bot that verifies any claim with | |
Web app — paste any sentence, get a confidence score and sources | |
CLI tool — two claims battle it out, evidence decides the winner | |
Verify every factual claim in your README or docs | |
Research brief builder for podcast interviews |
Environment Variables
These are for running the MCP server or frontend locally. The verification engine runs as a hosted service and does not require local configuration.
Variable | Required | Description |
| Yes (MCP) | LastSearch API key ( |
Tech Stack
API: Node.js, TypeScript, Fastify, Zod
Search: Multi-provider (parallel search across sources)
Parsing: @mozilla/readability + linkedom
AI: LLM via OpenRouter
Caching: Redis or in-memory with intelligent TTL (time-sensitive queries get shorter TTL)
Frontend: React, Tailwind CSS, shadcn/ui, Framer Motion
Verification: Hybrid keyword + semantic matching with evidence reranking
MCP: @modelcontextprotocol/sdk
Python SDK: httpx, Pydantic
Database: Supabase (PostgreSQL)
Agent Skills
Pre-built skills that teach AI coding agents (Claude Code, Codex, Cursor, etc.) when and how to use LastSearch:
npx skills add lastsearch-hq/lastsearch-skillsSkill | What it does |
Evidence-backed answers with citations and confidence | |
Compare raw LLM vs evidence-backed, verify claims | |
Structured claim extraction from URLs | |
Multi-query research with persistent knowledge | |
Multi-step agentic research with reasoning chains and gap analysis | |
Settle factual disputes — evidence-backed vs raw LLM side-by-side | |
Track evolving topics over time, diff against prior knowledge | |
Generate formatted citations (APA/MLA) with authority scores | |
Clarity — anti-hallucination answer engine with optional web verification |
Community
Discord — questions, feedback, showcase
GitHub Issues — bugs, feature requests
Contributing
See CONTRIBUTING.md for setup instructions, coding conventions, and PR process.
License
This project uses an open-core model:
Component | License | What it means |
SDKs, MCP server, integrations, frontend (this repo) | Use freely, modify, redistribute | |
Verification engine (separate private repo) | BSL 1.1 | Hosted service — free to use via API, but source is not public. Converts to Apache 2.0 on 2030-03-25 |
See the LICENSE file for details on this repository.
Available Tools
5 toolsbrowse_answerB
Full deep research pipeline: search the web, fetch pages, extract claims, build evidence graph, and generate a structured answer with citations and confidence score.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
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. While it outlines the pipeline steps, it fails to mention critical behavioral traits such as execution time, rate limits, authentication needs, error handling, or what happens if steps fail. For a complex multi-step tool with no annotations, this is a significant gap in transparency.
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 appropriately sized and front-loaded, listing key steps in a single sentence without unnecessary words. However, it could be more structured by separating steps with commas or bullet points for clarity, and some phrases like 'Full deep research pipeline' are slightly redundant with the tool name 'browse_answer'.
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?
Given the tool's complexity (multi-step pipeline), lack of annotations, no output schema, and minimal parameter guidance, the description is incomplete. It doesn't explain return values (e.g., format of the 'structured answer'), error conditions, or performance considerations, leaving the agent with insufficient context for reliable use.
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 has 1 parameter with 0% description coverage, so the description must compensate. It implies the 'query' parameter drives the research pipeline but doesn't add meaning beyond that (e.g., format expectations, length limits, or examples). Since there's only one parameter, the baseline is 4, but the description provides minimal semantic value, resulting in a score of 3.
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 clearly states the tool's purpose with specific verbs ('search the web, fetch pages, extract claims, build evidence graph, generate a structured answer') and resources ('with citations and confidence score'), distinguishing it from sibling tools like browse_search or browse_extract by describing a comprehensive multi-step pipeline rather than individual operations.
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 description provides no guidance on when to use this tool versus alternatives like browse_search (for simple searches) or browse_compare (for comparisons). It implies usage for 'full deep research' but lacks explicit when/when-not instructions or prerequisites, leaving the agent to infer context from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_compareC
Compare a raw LLM answer (no sources) vs an evidence-backed answer. Shows the difference between hallucination-prone and grounded responses.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
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 describes the tool's function but lacks details on how the comparison is performed, what the output format looks like, whether it requires specific data inputs beyond the query, or any rate limits or error conditions. This is a significant gap for a tool with no annotation coverage.
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 concise and front-loaded in a single sentence, efficiently stating the tool's purpose without unnecessary words. However, it could be more structured by explicitly separating the function from usage context, but it earns its place by being clear and to the point.
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?
Given the complexity of comparing answers and the lack of annotations, output schema, and poor parameter documentation, the description is incomplete. It doesn't cover how the tool behaves, what inputs are needed beyond the query, or what results to expect, making it inadequate for effective agent use without additional context.
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 input schema has 1 parameter with 0% description coverage, and the tool description provides no information about the 'query' parameter. It doesn't explain what the query should contain, its format, or how it relates to the comparison process, failing to compensate for the lack of schema documentation.
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 clearly states the tool's purpose: comparing a raw LLM answer against an evidence-backed answer to show differences between hallucination-prone and grounded responses. It specifies the verb 'compare' and the resource 'answers', but doesn't differentiate from sibling tools like browse_answer or browse_search, which likely handle similar content.
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 description provides no guidance on when to use this tool versus alternatives like browse_answer or browse_search. It mentions comparing two types of answers but doesn't specify prerequisites, context, or exclusions for usage, leaving the agent without clear selection criteria among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_extractC
Extract structured knowledge (claims + sources + confidence) from a single web page using AI.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| query | No |
TDQS
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 mentions AI-based extraction but doesn't cover critical aspects like rate limits, authentication needs, error handling, or what happens if extraction fails. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
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 a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does, making it easy to parse and understand quickly.
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?
Given the complexity of AI-based extraction, no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on output format, error conditions, and behavioral constraints, making it inadequate for a tool with two parameters and no structured support.
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 description coverage is 0%, so the schema provides no parameter details. The description doesn't explain the parameters (url and query) beyond implying they relate to web page extraction. It adds minimal semantic value, failing to compensate for the low schema coverage, but at least hints at the tool's function.
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 clearly states the tool's purpose: extracting structured knowledge (claims, sources, confidence) from a single web page using AI. It specifies the verb 'extract' and resource 'structured knowledge from a single web page', but doesn't explicitly differentiate from sibling tools like browse_answer or browse_compare, which likely serve different purposes.
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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or comparisons to sibling tools such as browse_answer or browse_search, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_openB
Fetch and parse a web page into clean text using Readability. Strips ads, nav, and boilerplate.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
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 describes the tool's behavior: fetching and parsing web pages, using Readability to strip ads, navigation, and boilerplate. However, it lacks details on error handling, rate limits, authentication needs, or output format (e.g., text structure). This is a moderate gap for a tool with no annotation coverage.
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 a single, efficient sentence that front-loads the core purpose ('Fetch and parse a web page into clean text') and adds clarifying details ('using Readability. Strips ads, nav, and boilerplate.'). Every part earns its place by specifying the method and outcome without redundancy or unnecessary elaboration.
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?
Given the tool's moderate complexity (web parsing with cleanup), no annotations, no output schema, and low schema coverage (0%), the description is incomplete. It covers the basic operation but omits critical details like output format, error cases, or performance considerations. For a tool with no structured support, this leaves significant gaps for an agent to use it effectively.
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 input schema has 1 parameter (url) with 0% description coverage, so the schema provides no semantic context. The description doesn't explicitly mention parameters, but it implies the 'url' parameter by stating 'Fetch and parse a web page.' This adds minimal meaning beyond the schema. With 0 parameters documented in the schema, the baseline is 4, as the description compensates slightly by clarifying the resource type.
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 clearly states the tool's purpose: 'Fetch and parse a web page into clean text using Readability.' It specifies the verb (fetch and parse) and resource (web page), and mentions the technology (Readability) and outcome (clean text). However, it doesn't explicitly differentiate from sibling tools like browse_answer or browse_extract, which likely have related but distinct purposes.
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 description provides no guidance on when to use this tool versus its siblings (browse_answer, browse_compare, browse_extract, browse_search). It mentions stripping ads, nav, and boilerplate, which implies a use case for clean text extraction, but doesn't specify alternatives or exclusions. Without explicit comparisons, the agent must infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_searchC
Search the web for information on a topic. Returns URLs, titles, snippets, and relevance scores.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No |
TDQS
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 mentions what is returned (URLs, titles, snippets, relevance scores) but lacks critical details: it doesn't specify rate limits, authentication needs, potential costs, or how results are sourced (e.g., search engine used). For a web search tool with zero annotation coverage, this is a significant gap in transparency.
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 appropriately sized and front-loaded: it states the core purpose in the first sentence and adds return details in the second. Every sentence earns its place with no wasted words, making it efficient and easy to parse.
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?
Given the complexity of a web search tool, no annotations, no output schema, and low schema coverage, the description is incomplete. It lacks details on behavioral traits (e.g., rate limits), parameter usage, and how to interpret results (e.g., relevance scores). The description does not adequately compensate for the missing structured data.
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 description coverage is 0%, so the description must compensate for undocumented parameters. It adds no meaning beyond the schema: it doesn't explain what 'query' should contain (e.g., keywords, phrases) or 'limit' (e.g., max results, default value). With 2 parameters and no schema descriptions, the description fails to provide necessary semantic context.
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 clearly states the tool's purpose: 'Search the web for information on a topic.' It specifies the verb ('Search') and resource ('the web'), and mentions what information is returned. However, it doesn't explicitly differentiate from sibling tools like 'browse_answer' or 'browse_compare', which likely have related but distinct purposes.
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 description provides no guidance on when to use this tool versus its siblings (browse_answer, browse_compare, browse_extract, browse_open). It implies usage for general web searching but offers no explicit alternatives, exclusions, or context for selection among related tools.
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.
5 tool updates
v1.0.0- First observed
browse_answer - First observed
browse_compare - First observed
browse_extract - First observed
browse_open - First observed
browse_search
TDQS
Each tool has a clearly distinct purpose with no overlap: browse_answer handles full research pipelines, browse_compare compares answer types, browse_extract extracts from single pages, browse_open fetches/parses pages, and browse_search performs web searches. The descriptions clearly differentiate their scopes and workflows.
All tools follow a consistent 'browse_verb' pattern (browse_answer, browse_compare, browse_extract, browse_open, browse_search), using snake_case uniformly. This predictable naming makes it easy for agents to understand and select tools based on their action verbs.
With 5 tools, this server is well-scoped for web research and browsing tasks. Each tool earns its place by covering distinct aspects of the domain (searching, fetching, extracting, comparing, and full research), avoiding bloat while providing comprehensive functionality.
The tool set covers core web research workflows effectively, including search, page retrieval, extraction, and answer generation/comparison. A minor gap exists in operations like updating or managing saved data, but agents can work around this for most research tasks.
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
Agent-native search engine with live web research optimized for AI agents.
Real-time fact-check, citation verification, and source-freshness for AI agents.
Source-traced evidence research for AI agents. We organise the evidence; you decide.
Web research for agents: quality-scored Google search, webpage extraction, and deep research.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnhances LLM applications with deep autonomous web research capabilities, delivering higher quality information than standard search tools by exploring and validating numerous trusted sources.368MIT
- AlicenseAqualityNot gradedmaintenanceEnables hybrid web search and intelligent content extraction, combining semantic search with documentation-optimized reading that strips noise and returns clean, token-efficient context for AI agents.2-
- AlicenseAqualityDmaintenanceUniversal Search-First Knowledge Acquisition Plugin for LLMs. Enables real-time web search and deep page browsing via MCP or CLI. Zero-cost, privacy-first, supports DuckDuckGo, Bing, Google, Brave, Wikipedia, Arxiv, YouTube, Reddit and more.21916MIT
- AlicenseNot gradedqualityCmaintenanceWeb search, clean page reading & one-call research dossiers for AI agents. No API key — your agent does the synthesis.124MIT
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/LastSearch-HQ/lastsearch'
If you have feedback or need assistance with the MCP directory API, please join our Discord server