Skip to main content
Glama

πŸ€– AgentTools API

Production-Grade Tool APIs for Agentic AI Systems & Enterprise Automation
High-Value Financial Document Intelligence β€’ Token-Optimized Web Scraping β€’ MCP Server for Claude & Cursor β€’ Zero Third-Party API Costs

FastAPI Python MCP Glama MCP RapidAPI License: MIT


πŸ› οΈ Flagship Agentic Tools

Tool

Endpoint

Description

Typical Use Case

🧾 Invoice & Receipt Intelligence

POST /tools/invoice-extract

Extracts structured JSON (vendor, invoice #, dates, line items, totals, math verify)

Bookkeeping bots, ERP pipelines, CFO agents

πŸ“„ PDF Document Intelligence

POST /tools/pdf-extract

Page-by-page mapping, metadata, outlines, and exact LLM token budget estimation

RAG ingestion, legal & contract analysis

🌐 Markdown Web Scraper

POST /tools/web-reader

Strips ads, navbars, and cookie banners; returns clean, token-efficient Markdown

Web research agents, documentation readers

πŸ” Web Search

POST /tools/web-search

Live web search via DuckDuckGo with structured snippets

Real-time agent fact-checking

πŸ“° News Intelligence

POST /tools/news

Topic-based news headlines and summaries via Google News RSS

Market intelligence & news monitoring

πŸ“ Text Summarizer

POST /tools/summarize

Zero-cost extractive text summarization

Context compression

☁️ Global Weather

POST /tools/weather

Real-time global weather and multi-day forecasts

Travel & logistics agents

🌍 IP Geolocation

GET /tools/ip-info

Geolocation, ISP, and network metadata lookup

Security & localization


Related MCP server: ntriq-agentshop

⚑ Feature Highlights

  • Zero External API Costs: Core tools run on-server with deterministic layout parsing and open data feeds.

  • Math-Verified Invoices: Automatic check ensures Subtotal + Tax == Total Amount Due to prevent accounting hallucination.

  • LLM Token-Budget Aware: Every document and web extraction returns word counts and estimated token usage.

  • Dual Protocol: Standard REST API with OpenAPI specification PLUS native Model Context Protocol (MCP) for Claude Desktop and Cursor.

  • Enterprise Auth & Metering: Built-in SQLite usage tracking, tier quotas (Free/Pro/Enterprise), and support for both X-API-Key and X-RapidAPI-Key.


πŸš€ Quick Start

1. Clone & Set Up Virtual Environment

git clone https://github.com/kulas-100/agent-tools.git
cd agent-tools

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

2. Environment Configuration

cp .env.example .env
# Edit .env if you wish to change your master or default API keys

3. Run the Server

uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Open http://localhost:8000/docs in your browser to test endpoints via the interactive Swagger UI.


πŸ“– API Usage & cURL Examples

All authenticated requests require the X-API-Key header (default key: test-api-key-12345).

1. Extract Invoice / Receipt Data

curl -X POST http://localhost:8000/tools/invoice-extract \
  -H "X-API-Key: test-api-key-12345" \
  -H "Content-Type: application/json" \
  -d '{
    "raw_text": "Acme Cloud Inc.\nTax ID: US-94829104\nINVOICE #INV-2026-8891\nDate: 2026-10-15\nDue: 2026-11-15\nBill To: Wayne Corp\nGPU Compute 2 $ 450.00 $ 900.00\nSubtotal: $ 900.00\nTax: $ 90.00\nTotal: $ 990.00"
  }'

Response:

{
  "success": true,
  "invoice": {
    "document_type": "invoice",
    "invoice_number": "INV-2026-8891",
    "vendor_name": "Acme Cloud Inc.",
    "vendor_tax_id": "US-94829104",
    "customer_name": "Wayne Corp",
    "invoice_date": "2026-10-15",
    "due_date": "2026-11-15",
    "currency": "USD",
    "subtotal": 900.0,
    "tax_amount": 90.0,
    "total_amount": 990.0,
    "line_items": [
      {
        "description": "GPU Compute",
        "quantity": 2.0,
        "unit_price": 450.0,
        "total_price": 900.0
      }
    ]
  },
  "confidence_score": 1.0,
  "math_verified": true,
  "processing_time_ms": 19.4
}

2. Scrape Webpage to Clean Markdown

curl -X POST http://localhost:8000/tools/web-reader \
  -H "X-API-Key: test-api-key-12345" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "include_links": true}'

3. Parse PDF Document with Token Budgets

curl -X POST http://localhost:8000/tools/pdf-extract \
  -H "X-API-Key: test-api-key-12345" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", "max_pages": 5}'

πŸ€– Model Context Protocol (MCP) Integration

Connect AgentTools directly to Claude Desktop or Cursor:

Claude Desktop Configuration (claude_desktop_config.json)

{
  "mcpServers": {
    "agenttools": {
      "command": "/absolute/path/to/agent-tools/.venv/bin/python",
      "args": ["/absolute/path/to/agent-tools/mcp_server.py"]
    }
  }
}

🌐 Public Marketplace Listing


πŸ“„ License

MIT License. Free for commercial and personal development.

Available Tools

9 tools
calculatorA

Safely evaluate mathematical and scientific expressions using an isolated AST evaluator without unsafe execution. Supports arithmetic (+, -, *, /, **), trigonometry (sin, cos, tan), logarithms, square roots, and factorials. Use whenever exact numeric precision is required to avoid arithmetic hallucinations. Pure, deterministic, and idempotent.

NameRequiredDescriptionDefault
expressionYesThe mathematical expression string to evaluate (e.g. 'sqrt(144) + 15 * log(100)').

TDQS

A4.1/5.0
Behavior4/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 and does well: it discloses the isolated AST evaluator, the no-unsafe-execution model, and that the tool is pure, deterministic, and idempotent. It stops short of describing error behavior for malformed expressions, which keeps it below 5.

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?

Three compact sentences, front-loaded with purpose and the safety claim, then capabilities, then the usage trigger. There is slight redundancy between 'Safely...without unsafe execution' and 'Pure, deterministic, and idempotent', but nothing meaningfully wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a single-parameter pure tool with no annotations and no output schema, the description covers purpose, supported operations, safety model, and when to call it. A brief note on the return value or error handling would round it out.

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

Parameters3/5

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

Schema coverage is 100% and the single expression parameter is documented with an example, so the schema does most of the work. The description adds value by listing supported functions (sin, cos, tan, log, sqrt, factorial) that indicate valid expression syntax, but no format or quoting rules.

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?

States a specific verb (evaluate) and resource (mathematical and scientific expressions), and enumerates supported operations. It is clearly distinguishable from siblings like web_search or summarize, which cannot perform exact arithmetic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance: 'Use whenever exact numeric precision is required to avoid arithmetic hallucinations.' No exclusions or named alternatives, but no sibling is a plausible substitute for arithmetic evaluation, so the routing guidance is sufficient.

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

get_ip_infoA

Retrieve geolocation, country, city, geographic coordinates, ISP, and timezone metadata for an IP address. Use to inspect IP locations, detect regional origins, or resolve server IP information. Read-only and idempotent.

NameRequiredDescriptionDefault
ipNoIPv4 or IPv6 address to look up (e.g. '8.8.8.8'). Leave empty or blank to look up the caller's public IP address.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations supplied, the description takes on the safety burden itself and does so by declaring the operation 'Read-only and idempotent', which is the key fact an agent needs before calling. It also enumerates the returned data fields, though it omits rate limits and invalid-IP error 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?

Two sentences, zero redundancy: the first defines the returned data, the second defines usage and safety. Returned fields are front-loaded ahead of the softer usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a one-parameter tool with no output schema, listing the returned fields fills the gap that the missing output schema would otherwise leave. Coverage is nearly complete; only the shape of the response (e.g. field formats, failure modes) is left unstated.

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

Parameters3/5

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

Schema coverage is 100% and the single 'ip' parameter is fully documented in the schema, including the empty-value behavior for caller IP lookup. The description adds nothing about parameter meaning beyond what the schema already states, so the baseline 3 applies.

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?

Opens with a specific verb ('Retrieve') and resource ('geolocation, country, city, geographic coordinates, ISP, and timezone metadata for an IP address'), so the agent knows exactly what the tool returns. No sibling in the list overlaps, so differentiation is unnecessary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names three use casesβ€”inspecting IP locations, detecting regional origins, and resolving server IP informationβ€”which gives clear selection context. It stops short of stating when NOT to use it or naming an alternative, but no plausible alternative exists among the siblings.

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

get_newsA

Fetch current news headlines, summaries, sources, and publication timestamps for any topic or keyword via Google News RSS. Use when monitoring breaking news, market updates, or industry trends. Read-only and idempotent.

NameRequiredDescriptionDefault
topicYesThe topic, industry, person, or search keyword to retrieve news stories for (e.g. 'artificial intelligence').
max_articlesNoMaximum number of news articles to retrieve (integer between 1 and 20, default 5).

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full behavioral burden, and it does deliver the safety profile directly: 'Read-only and idempotent,' which tells the agent it can retry freely without side effects. It also implies no auth is needed by citing the public Google News RSS feed. It omits other relevant traits such as rate limiting, result freshness/ordering, or behavior when the feed returns nothing, which is why it lands at adequate rather than strong.

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?

Three short sentences in a sensible order: capability first, then triggering context, then the safety properties. Nothing is padded or repeated. Slightly shy of 5 only because the RSS-source clause and the read-only note could be folded more tightly, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a simple two-parameter read tool with no output schema, the description covers what is returned (headlines, summaries, sources, timestamps) and the safety posture, which is the essential information. Minor gaps remain around empty-result and volume behavior, but an agent could invoke this correctly from what is stated.

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

Parameters3/5

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

Schema description coverage is 100%, so both `topic` and `max_articles` are already documented with examples and bounds. The description adds only marginally by broadening the notion of a topic to 'any topic or keyword,' and it never mentions `max_articles` in prose. Baseline 3 applies when the schema does the explanatory work.

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 names a specific verb ('Fetch') plus the exact resource and payload: 'current news headlines, summaries, sources, and publication timestamps for any topic or keyword via Google News RSS.' It also identifies the underlying source, so an agent knows precisely what it gets back. No sibling tool covers news, so no differentiation is required.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete triggering contexts: 'monitoring breaking news, market updates, or industry trends.' That is clear when-to-use guidance with no misleading exclusions. It stops short of naming when-not-to-use or pointing to a nearby alternative (e.g. web_search for non-news queries), so it is not a full 5.

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

get_weatherA

Get current weather conditions (temperature, humidity, wind speed, weather code) and multi-day daily forecasts for any city or geographic location worldwide via Open-Meteo. Use when answering weather queries or trip planning. Read-only and idempotent.

NameRequiredDescriptionDefault
locationYesCity name (e.g. 'Tokyo', 'London', 'San Francisco') or comma-separated latitude,longitude.
forecast_daysNoNumber of forecast days to return (integer between 1 and 7, default 3).

TDQS

A4/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden; it does state 'Read-only and idempotent,' which covers the safety profile and is the most important disclosure. It omits unit conventions (Celsius vs Fahrenheit, km/h vs mph), behavior for an unresolvable location string, and whether the Open-Meteo call needs a key or has rate limits β€” meaningful gaps for a data-fetch tool.

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?

Two sentences, front-loaded with the capability and returned fields, followed by the usage trigger and the read-only guarantee. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a simple two-parameter read tool with a fully documented schema and no output schema, the description covers purpose, source, returned fields, and usage context adequately. The main omission is the unit system of the returned values, which matters for interpreting the response.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (location formats, forecast_days range 1-7 with default 3) are already fully documented in the schema. The description only restates 'any city or geographic location worldwide' without adding format nuance, so baseline 3 applies.

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?

States a specific verb ('Get') plus the exact resource ('current weather conditions ... and multi-day daily forecasts'), enumerates the returned fields, and names the upstream provider (Open-Meteo). An agent knows precisely what comes back without opening a schema, and the tool is clearly distinct from unrelated siblings like get_news or web_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance: 'Use when answering weather queries or trip planning.' That is a clear context trigger with no ambiguity about the tool's domain. It does not name exclusions or alternatives, but the sibling set contains no competing weather tool, so there is little to route against.

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

invoice_extractA

Extract structured financial data (vendor, invoice #, PO #, dates, line items, subtotal, tax, total, currency) from invoices, receipts, and bills, verifying mathematical consistency (subtotal + tax == total). Use when processing accounting documents or receipts. Do not use for generic documents. Read-only and idempotent.

NameRequiredDescriptionDefault
urlNoPublic HTTPS URL pointing directly to an invoice image or PDF file (e.g. 'https://example.com/invoice.pdf').
raw_textNoPre-extracted or OCR text content of the invoice to parse directly.
file_base64NoBase64-encoded file content of the invoice or receipt document.
currency_hintNo3-letter ISO 4217 currency code hint (e.g. 'USD', 'EUR', 'GBP') if no symbol is found.USD

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden; it does disclose the self-declared read-only/idempotent profile and the added cross-field validation (subtotal + tax == total), which is real behavioral value. It omits what happens when the math fails to reconcile, which of the three input modes takes precedence, and any failure/auth behavior.

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?

Front-loaded with the verb and the extracted field set, then usage guidance, then the safety profile β€” a sensible order with no filler sentences. The parenthetical field list is dense but justified given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Because there is no output schema, listing the returned fields is necessary and the description does it. Remaining gaps β€” precedence between url/raw_text/file_base64 and behavior on failed math verification β€” are modest but real for a 4-param extraction tool.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters (url, raw_text, file_base64, currency_hint) are already documented in the schema, which sets the baseline at 3. The description adds nothing about mutual exclusivity or precedence among the three optional input sources, which is the main semantic risk for this tool.

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?

States a specific verb (extract) plus the exact resource and output fields (vendor, invoice #, PO #, line items, subtotal, tax, total, currency), and scopes it to invoices/receipts/bills. The 'do not use for generic documents' line separates it from the pdf_extract sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives both a positive trigger ('processing accounting documents or receipts') and an exclusion ('do not use for generic documents'). It stops short of naming the sibling an agent should fall back to for generic PDFs, so the routing is clear but not fully resolved.

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

pdf_extractA

Extract text per page, outlines, document metadata, and accurate token count estimates from PDF documents. Use when ingesting multi-page reports, whitepapers, contracts, or legal documents into context. Read-only and idempotent.

NameRequiredDescriptionDefault
urlNoDirect HTTPS URL to download the target PDF file.
max_pagesNoMaximum number of consecutive pages to extract (1 to 50, default 15).
start_pageNo1-based index of the first page to extract (default 1).
file_base64NoBase64-encoded binary content of the PDF file.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well by declaring the operation read-only and idempotent. It also lists what is returned (per-page text, outlines, metadata, token estimates), though it omits details like file-size limits, rate limits, or pagination behavior beyond the schema.

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?

Two tightly written sentences, front-loaded with the action and outputs, followed by usage context and safety traits. No filler or redundant restatement of the name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a tool with no output schema, the description usefully enumerates the returned artifacts (text, outlines, metadata, token counts). It leaves out input-mode selection guidance and size or rate constraints, but the core extraction contract is clear enough to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100%, so URL, base64, max_pages, and start_page are already fully documented in the schema. The description adds no parameter-level guidance such as when to prefer URL versus file_base64, so the baseline 3 is appropriate.

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?

States a specific verb (extract) and concrete resources (text per page, outlines, metadata, token counts) from PDFs. This clearly distinguishes it from sibling tools like web_reader or summarize, which are not PDF-specific extraction tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context: ingesting multi-page reports, whitepapers, contracts, or legal documents. It does not explicitly name alternatives or exclusions, but the document-type guidance is sufficiently specific to route most calls correctly.

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

summarizeA

Perform extractive text summarization to identify and return the most informative, central sentences from long articles or documents based on term-frequency scoring. Use to compress long context into key points. Pure, deterministic, and idempotent.

NameRequiredDescriptionDefault
textYesRaw text content to summarize (maximum 50,000 characters).
num_sentencesNoNumber of key summary sentences to extract (integer between 1 and 10, default 3).

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does meaningful work: "Pure, deterministic, and idempotent" effectively declares a no-side-effect, repeatable read operation, which is exactly the property an agent would otherwise want from annotations. The method (term-frequency scoring, extractive rather than abstractive) further sets expectations about output fidelity, though error behavior on oversized input is left to the schema.

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?

Three sentences, each load-bearing: the first defines method and output, the second gives the use case, the third states behavioral guarantees. The purpose is front-loaded and there is no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a low-complexity, two-parameter tool with no annotations and no output schema, the definition covers method, use case, and side-effect profile. The only modest gap is that it does not describe the shape of the returned result (e.g., ordered list of sentences), which matters slightly since no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'text' (50,000-char cap) and 'num_sentences' (1-10, default 3) fully documented in the schema, so the baseline is 3. The description adds only the notion of "most informative, central sentences" as the selection criterion, without extra detail on the optional parameter beyond what the schema states.

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 names a specific verb and resource: extractive summarization of long articles/documents based on term-frequency scoring, and clarifies it returns central sentences rather than abstractive rewrites. That is far more precise than a restatement of the name. It does not, however, reference any sibling tool (e.g., web_reader or pdf_extract as upstream sources), so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers one explicit usage cue: "Use to compress long context into key points." That tells the agent a triggering condition but gives no when-not guidance, no input-size prerequisite beyond the schema's 50,000-character cap, and no mention of how it relates to siblings that fetch or extract long text.

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

web_readerA

Fetch a public webpage URL and extract clean, structured Markdown optimized for LLM token efficiency, stripping headers, footers, ads, and navigation menus. Use when reading articles, blog posts, documentation, or public web pages. Read-only and idempotent.

NameRequiredDescriptionDefault
urlYesThe absolute HTTP or HTTPS URL of the webpage to fetch and convert to Markdown.
max_lengthNoMaximum character limit for the returned Markdown content (1,000 to 50,000, default 15000).
include_linksNoWhether to extract and append a catalog of all hyperlinks found in the document.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations supplied, the description does the heavy lifting: it discloses the read-only, idempotent safety profile and explains what the tool strips (headers, footers, ads, navigation menus) and what it returns (Markdown for token efficiency). It omits failure behavior β€” blocked, paywalled, or JavaScript-rendered pages β€” which an agent calling a scraper would benefit from knowing.

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?

Two sentences with zero padding; the core action and transformation lead, and the usage guidance plus safety profile follow compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a three-parameter fetch tool with no output schema and no annotations, the description covers action, scope, output shape, and safety. The remaining gap is error/edge-case behavior, which is not covered anywhere else in the structured data.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema with defaults and ranges. The description adds only indirect context ('LLM token efficiency') that motivates the length limit, without further clarifying parameter behavior, so the baseline 3 applies.

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?

States a specific verb ('fetch') and resource (a public webpage URL) plus the transformation performed ('extract clean, structured Markdown'), which cleanly separates it from the sibling web_search tool that locates pages rather than reading them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage context ('reading articles, blog posts, documentation, or public web pages') and implicitly scopes out non-public/authenticated pages via 'public webpage URL'. It does not name an explicit alternative or state when not to use it, so it stops short of full routing guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.3
    • Changedcalculator1 field changed
      • changedInput schema / properties / expression / description
        Previous value: -"Math expression (e.g. 'sqrt(144)', 'sin(pi/2)')"New value: +"The mathematical expression string to evaluate (e.g. 'sqrt(144) + 15 * log(100)')."
    • Changedget_ip_info1 field changed
      • changedInput schema / properties / ip / description
        Previous value: -"IP address (leave blank for your own IP)"New value: +"IPv4 or IPv6 address to look up (e.g. '8.8.8.8'). Leave empty or blank to look up the caller's public IP address."
    • Changedget_news2 fields changed
      • changedInput schema / properties / max_articles / description
        Previous value: -"Number of articles (1-20)"New value: +"Maximum number of news articles to retrieve (integer between 1 and 20, default 5)."
      • changedInput schema / properties / topic / description
        Previous value: -"News topic or keyword"New value: +"The topic, industry, person, or search keyword to retrieve news stories for (e.g. 'artificial intelligence')."
    • Changedget_weather2 fields changed
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Forecast days (1-7)"New value: +"Number of forecast days to return (integer between 1 and 7, default 3)."
      • changedInput schema / properties / location / description
        Previous value: -"City name (e.g. 'London', 'New York')"New value: +"City name (e.g. 'Tokyo', 'London', 'San Francisco') or comma-separated latitude,longitude."
    • Changedinvoice_extract4 fields changed
      • changedInput schema / properties / currency_hint / description
        Previous value: -"Default currency code (default USD)"New value: +"3-letter ISO 4217 currency code hint (e.g. 'USD', 'EUR', 'GBP') if no symbol is found."
      • changedInput schema / properties / file_base64 / description
        Previous value: -"Base64-encoded invoice file"New value: +"Base64-encoded file content of the invoice or receipt document."
      • changedInput schema / properties / raw_text / description
        Previous value: -"Raw invoice text if already extracted"New value: +"Pre-extracted or OCR text content of the invoice to parse directly."
      • changedInput schema / properties / url / description
        Previous value: -"URL to invoice PDF or image"New value: +"Public HTTPS URL pointing directly to an invoice image or PDF file (e.g. 'https://example.com/invoice.pdf')."
    • Changedpdf_extract4 fields changed
      • changedInput schema / properties / file_base64 / description
        Previous value: -"Base64-encoded PDF binary"New value: +"Base64-encoded binary content of the PDF file."
      • changedInput schema / properties / max_pages / description
        Previous value: -"Maximum pages to extract (default 15)"New value: +"Maximum number of consecutive pages to extract (1 to 50, default 15)."
      • changedInput schema / properties / start_page / description
        Previous value: -"Starting page number (default 1)"New value: +"1-based index of the first page to extract (default 1)."
      • changedInput schema / properties / url / description
        Previous value: -"Direct URL of the PDF"New value: +"Direct HTTPS URL to download the target PDF file."
    • Changedsummarize2 fields changed
      • changedInput schema / properties / num_sentences / description
        Previous value: -"Number of output sentences (1-10)"New value: +"Number of key summary sentences to extract (integer between 1 and 10, default 3)."
      • changedInput schema / properties / text / description
        Previous value: -"Text to summarize (max 50,000 chars)"New value: +"Raw text content to summarize (maximum 50,000 characters)."
    • Changedweb_reader3 fields changed
      • changedInput schema / properties / include_links / description
        Previous value: -"Whether to return page links catalog"New value: +"Whether to extract and append a catalog of all hyperlinks found in the document."
      • changedInput schema / properties / max_length / description
        Previous value: -"Max markdown length (default 15000)"New value: +"Maximum character limit for the returned Markdown content (1,000 to 50,000, default 15000)."
      • changedInput schema / properties / url / description
        Previous value: -"The full URL to fetch"New value: +"The absolute HTTP or HTTPS URL of the webpage to fetch and convert to Markdown."
    • Changedweb_search2 fields changed
      • changedInput schema / properties / max_results / description
        Previous value: -"Number of results (1-20)"New value: +"Number of search results to return (integer between 1 and 20, default 5)."
      • changedInput schema / properties / query / description
        Previous value: -"Search query"New value: +"The search query string, keywords, or question (e.g. 'latest Python PEP releases')."
  2. 9 tool updatesv0.1.0
    • First observedcalculator
    • First observedget_ip_info
    • First observedget_news
    • First observedget_weather
    • First observedinvoice_extract
    • First observedpdf_extract
    • First observedsummarize
    • First observedweb_reader
    • First observedweb_search

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but web_search and get_news overlap for current information, and invoice_extract can be confused with pdf_extract when invoices are PDFs. Descriptions largely help route correctly.

Naming Consistency3/5

All names use snake_case, but the conventions are mixed: verb_noun (get_weather), noun_verb (invoice_extract), noun (calculator), and bare verb (summarize). The names remain readable, but there is no single predictable pattern.

Tool Count5/5

Nine tools is well within the typical 3-15 range for a general agent toolkit, and each tool appears to earn its place as a distinct utility. There are no redundant variants or obvious filler tools.

Completeness4/5

The set covers a reasonable agent utility surface: document extraction, web reading/search, weather, math, news, summarization, and IP metadata. Some common gaps remain, such as generic file-format handling, OCR, or date/time utilities, but these are minor enough to work around.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    AI-native business management β€” invoices, expenses, clients, products, quotes, and webhooks. 31 tools for Claude, Cursor, Windsurf, and Cline.
    100
    552 npm
    13
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    File-based multi-agent coordination with persistent tasks, reports, issues and reviews. FCoP 4.0.5 provides 25 canonical MCP tools and 6 read-only resources over local stdio. Work stays in your project as Markdown records, with task lifecycle validation and branch workflows. Includes a Python API and a CLI for setup, inspection and diagnostics.
    25
    64 PyPI
    3
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP bridge for PDF Content Search β€” full-text PDF search with Apple Vision OCR across thousands of documents in under a second from Claude, Cursor, or any MCP client. Advanced filters (date, category, sender, amount), wildcards, boolean operators. Bridge open-source (MIT), PDF Content Search app is commercial with free iOS+Android companion scanner apps.
    84
    1
    MIT