Skip to main content
Glama

LastSearch

npm PyPI LangChain License Discord

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 + sources

Website · Playground · API Docs · Alternatives · Discord

Package names: npm: lastsearch · PyPI: lastsearch · LangChain: langchain-lastsearch — Previously lastsearch and lastsearch. 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:

  1. 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.

  2. 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.

  3. 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.

  4. Multi-provider search — Parallel search across multiple providers for broader source diversity. More independent sources = stronger cross-reference = higher confidence.

  5. 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.

  6. Source quote verification — LLM-extracted quotes verified against actual page text using multi-strategy matching.

  7. 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".

  8. Contradiction detection — Claim pairs analyzed for semantic conflicts using topic overlap and contradiction classification. Detected contradictions surfaced in the response and penalize confidence.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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

fast (default)

Single search → extract → verify pass

Quick lookups, real-time agents

thorough

Iterative confidence-gated loop (up to 3 passes), per-claim evidence retrieval, counter-query verification, multi-pass consistency checking

Important research, fact-checking

deep

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, set LASTSEARCH_API_KEY env var. For Python SDK, pass api_key="ls_xxx". For REST API, use Authorization: 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 lastsearch
from 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-lastsearch
from 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 setup

Or 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)

Authorization: Bearer ls_xxx

Full premium — semantic verification, multi-provider, multi-pass consistency

Generous quota with graceful fallback

LastSearch API Key (Pro)

Authorization: Bearer ls_xxx

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 migrations

The verification engine (API server) is in a separate private repository (lastsearch-hq/lastsearch-engine) and runs as a hosted service.

API Endpoints

Endpoint

Description

POST /browse/search

Search the web

POST /browse/open

Fetch and parse a page

POST /browse/extract

Extract structured claims from a page

POST /browse/answer

Full pipeline: search + extract + cite. depth: "fast", "thorough", or "deep"

POST /browse/answer/stream

Streaming answer via SSE — real-time token streaming + progress events

POST /browse/compare

Compare raw LLM vs evidence-backed answer

POST /browse/clarity

Clarity — anti-hallucination answer engine. Three modes: mode: "prompt" (enhanced prompts only), mode: "answer" (LLM answer, default), mode: "verified" (LLM + web fusion). Legacy verify: true = mode: "verified"

GET /browse/share/:id

Get a shared result

GET /browse/stats

Total queries answered

GET /browse/sources/top

Top cited source domains

GET /browse/analytics/summary

Usage analytics (authenticated)

POST /session

Create a research session

POST /session/:id/ask

Research with session memory (recalls + stores claims)

POST /session/:id/recall

Query session knowledge without new search

GET /session/:id/knowledge

Export all session claims

POST /session/:id/share

Share a session publicly (returns shareId)

GET /session/share/:shareId

View a shared session (public, no auth)

POST /session/share/:shareId/fork

Fork a shared session into your account

GET /session/:id

Get session details

GET /sessions

List your sessions (authenticated)

DELETE /session/:id

Delete a session (authenticated)

POST /browse/feedback

Submit feedback on a result (good/bad/wrong)

GET /browse/learning/stats

Self-learning engine stats

GET /user/stats

Your query stats (authenticated)

GET /user/history

Your query history (authenticated)

DELETE /user/data

Delete all your data (GDPR right to erasure)

MCP Tools

Tool

Description

search

Search the web for information on any topic

open

Fetch and parse a web page into clean text

extract

Extract structured claims from a page

answer

Full pipeline: search + extract + cite. depth: "fast", "thorough", or "deep"

compare

Compare raw LLM vs evidence-backed answer

clarity

Anti-hallucination answer engine — three modes: prompt (prompts only), answer (LLM), verified (LLM + web fusion)

session_create

Create a research session (persistent memory)

session_ask

Research within a session (recalls prior knowledge)

session_recall

Query session knowledge without new web search

session_share

Share a session publicly (returns share URL)

session_knowledge

Export all claims from a session

session_fork

Fork a shared session to continue the research

feedback

Submit feedback on a result to improve accuracy

Python SDK

Method

Description

client.search(query)

Search the web

client.open(url)

Fetch and parse a page

client.extract(url, query=)

Extract claims from a page

client.ask(query, depth=)

Full pipeline with citations. depth: "fast", "thorough", or "deep"

client.compare(query)

Raw LLM vs evidence-backed

client.session(name)

Create a research session

session.ask(query, depth=)

Research with memory recall

session.recall(query)

Query session knowledge

session.knowledge()

Export all session claims

session.share()

Share session publicly (returns shareId + URL)

client.get_session(id)

Resume an existing session by ID

client.list_sessions()

List all your sessions

client.fork_session(share_id)

Fork a shared session into your account

session.delete()

Delete a session

client.feedback(result_id, rating)

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-assessed

  • shareId — 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 fallback

  • claims[].verified — whether the claim was verified against source text

  • claims[].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 analysis

  • trace — execution timeline for debugging and monitoring

  • quota — 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

research-agent.py

Simple research agent with citations

deep-research-agent.py

Multi-step deep reasoning with gap analysis

streaming-agent.py

Real-time SSE streaming with progress events

contradiction-detector.py

Surface contradictions across sources

enterprise-search.py

Custom data sources + zero retention mode

code-research-agent.py

Research libraries/docs before writing code

hallucination-detector.py

Compare raw LLM vs evidence-backed answers

langchain-agent.py

LastSearch as a LangChain tool

crewai-research-team.py

Multi-agent research team with CrewAI

research-session.py

Research sessions with persistent memory

Tutorials

Tutorial

What You'll Build

coding-agent/

Agent that researches before writing code — never recommends deprecated libraries

support-agent/

Agent that verifies answers before responding — escalates when confidence is low

content-agent/

Agent that writes blog posts where every stat has a citation

fact-checker-bot/

Discord bot that verifies any claim with !verify and !compare

is-this-true/

Web app — paste any sentence, get a confidence score and sources

debate-settler/

CLI tool — two claims battle it out, evidence decides the winner

docs-verifier/

Verify every factual claim in your README or docs

podcast-prep/

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

LASTSEARCH_API_KEY

Yes (MCP)

LastSearch API key (ls_xxx) — get one at lastsearch.ai/dashboard

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-skills

Skill

What it does

research

Evidence-backed answers with citations and confidence

fact-check

Compare raw LLM vs evidence-backed, verify claims

extract

Structured claim extraction from URLs

sessions

Multi-query research with persistent knowledge

deep-dive

Multi-step agentic research with reasoning chains and gap analysis

compare-claims

Settle factual disputes — evidence-backed vs raw LLM side-by-side

monitor

Track evolving topics over time, diff against prior knowledge

cite

Generate formatted citations (APA/MLA) with authority scores

clarity

Clarity — anti-hallucination answer engine with optional web verification

View all skills →

Community

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)

Apache 2.0

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 tools
browse_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

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 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

C2.7/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 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
queryNo

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 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.

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 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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

B3.4/5.0
Behavior3/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 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.

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 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.

Completeness3/5

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

Given the tool's moderate complexity (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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

Tool Schema Changelog

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

  1. 5 tool updatesv1.0.0
    • First observedbrowse_answer
    • First observedbrowse_compare
    • First observedbrowse_extract
    • First observedbrowse_open
    • First observedbrowse_search

TDQS

A3.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LastSearch-HQ/lastsearch'

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