pdf_extractor
Extracts plain text preview from public PDF URLs ($0.005 USDC)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pdfUrl | Yes |
Extracts plain text preview from public PDF URLs ($0.005 USDC)
| Name | Required | Description | Default |
|---|---|---|---|
| pdfUrl | Yes |
Changes observed during successful MCP inspections. Dates show when Glama detected each change.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that only a 'preview' is extracted, that URLs must be public, and that there is a cost. However, it does not clarify what 'preview' means (e.g., truncation, page limits), or how failures like invalid or non-PDF URLs are handled.
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, compact sentence with no filler. It front-loads the core purpose and adds the key cost detail efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers the essential context: what it does, what input it expects, what output it returns, and cost. Some edge cases are missing, such as behavior with scanned or inaccessible PDFs, but the low complexity lessens the impact of those gaps.
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 gives no description for pdfUrl, and schema coverage is 0%, so the description must compensate. It adds meaningful context: the URL must point to a public PDF and the operation costs money. This is sufficient for the single parameter, though it could be more explicit that the URL should be a direct link to the PDF file.
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 a specific verb ('Extracts'), a specific resource ('public PDF URLs'), and the output ('plain text preview'). This distinguishes it from sibling tools like web_scraper or extract_json by focusing on PDFs and plain text extraction.
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 implies the tool should be used when the target is a public PDF URL, but it does not explicitly contrast it with alternatives or state when not to use it. A more explicit pointer to sibling tools, such as web_scraper for HTML pages, would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.
The tools are largely distinct, but web_scraper and browser_scraper overlap on web page scraping, and data_feeds and public_data_feed are hard to distinguish without more detail. A few descriptions do help separate output formats, but an agent could still misfire.
All names use snake_case and are descriptive, but the naming pattern is mixed: deploy_contract and render_screenshot are verb-first, while smart_contract_verifier, base_analytics, and data_feeds are noun phrases. This prevents a predictable verb_noun convention.
Twelve tools is a reasonable count and each has a defined paid purpose. However, the set spans scraping, data feeds, DeFi yields, and smart-contract deployment, so it feels slightly broad for a single server.
Core operations exist for scraping, extraction, deployment, verification, and data feeds, but the surface is incomplete for lifecycle workflows: contracts can be deployed but not called/managed, and data feeds cannot be listed or refreshed. The gaps are noticeable but not fatal for independent one-off API calls.