Professor Sausages — Web & Documents
by professorsausages.com · remote · no sign-in to list tools · v1.0.1 · published by com.professorsausages
Read pages & files to text, news, weather, market holidays and timezones via x402.
12 tools: 2 do something that can't be undone, 8 change things and 2 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone2Claude Code: ask: see these tools
- Changes things8Claude Code: ask: see these tools
- Only reads2Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http sausage-web https://x402.professorsausages.com/mcp/webTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
12 tools
Can't be undone 2Claude Code: ask
holidaysIs a market open on a date, and why not if it isn't.No findings
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Is a market open on a date, and why not if it isn't. view='next_session' finds the next open day; view='settle' computes a T+N settlement date skipping weekends and holidays; view='business_days' counts open sessions in a range; view='year' lists a calendar's whole year. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
timezoneCurrent local time, UTC offset and DST state for an IANA zone.No findings
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Current local time, UTC offset and DST state for an IANA zone. view='offset' answers at a specific instant; view='convert' moves a wall-clock time between two zones; view='business_hours' says whether an instant is inside local business hours. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
Changes things 8Claude Code: ask
image_to_textTranscribe an image to text (OCR) or describe it via a vision model — steerable with your own prompt.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Transcribe an image to text (OCR) or describe it via a vision model — steerable with your own prompt. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
newsNewest headlines from a deduped, tiered direct-feed pile (official press, wires and majors).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Newest headlines from a deduped, tiered direct-feed pile (official press, wires and majors). Pass q to keyword-search the retained multi-day archive instead; category='ai' or 'crypto' return the high-signal curated cuts. Snapshot of ingested feeds, not a live web search. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
news_batchUp to 10 headlines / ai / crypto / search reads behind ONE payment (POST /news/batch).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Up to 10 headlines / ai / crypto / search reads behind ONE payment (POST /news/batch). Each request names a `route` and carries that route's own parameters — including `since` with a cursor, so one batch can advance several polls at once. `data.results[i]` is exactly the single-route answer for `requests[i]`, in order, each with its own `next_cursor` to store per feed. Every element is validated before any payment is asked for. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
news_pollThe polling loop for a news-watching agent.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it The polling loop for a news-watching agent. First call: omit `since` — you get the current page plus a `next_cursor`. Every later call: pass that `next_cursor` as `since` and receive ONLY articles ingested after it, oldest first, plus the next cursor to store. Follow the whole pile (optionally one `category`) or a curated high-signal `topic` tape (ai, crypto). The pile refreshes every 15 minutes (`suggested_interval_seconds`); dedupe by article `id`, and by `cluster_id` to keep one record per story. A poll with nothing new is still a complete answer (new_count 0, cursor unchanged). Full loop + a paying Node poller: /skills/news.md. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
pdf_extractExtract any PDF up to 10 MB by URL.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Extract any PDF up to 10 MB by URL. format='text' returns one clean plain-text string; format='json' returns a per-page text array plus document metadata. Parsed in-Worker, no upstream service. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
pricingEvery endpoint this server fronts, with its exact per-call USD price (x402, USDC on Base) and a one-line summary, read live from the route table.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Every endpoint this server fronts, with its exact per-call USD price (x402, USDC on Base) and a one-line summary, read live from the route table. Free.
request_dataThe suggestion box: ask for data we don't have (a pre-2015 filing, an uncovered ticker, an unsupported chain, a whole dataset).No findings
Why it is in this group
- The name "request_data" says "request": a word for a change.
Description, as the server wrote it The suggestion box: ask for data we don't have (a pre-2015 filing, an uncovered ticker, an unsupported chain, a whole dataset). Requests feed the nightly ingestion queue — filings are usually available within ~24h. Include contact if you want to hear back. Free.
weatherCurrent conditions for a named place or coordinate.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Current conditions for a named place or coordinate. view='forecast' returns the hourly series; view='alerts' returns active severe-weather alerts (US coverage). Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
Only reads 2Claude Code: allow
find_dataDescribe the data you need in plain language (e.g.No findings
Why it is in this group
- The name "find_data" says "find": a word for reading.
Description, as the server wrote it Describe the data you need in plain language (e.g. 'Apple risk factors 2023', 'is this token a honeypot', 'is this email deliverable', 'read this page'). Searches this server's datasets first, then the whole Professor Sausages catalog, and returns matching endpoints with method, URL, price, and how to call them. Free.
read_urlRender a URL in a real headless browser (JavaScript executed) and return clean, LLM-ready markdown.No findings
Why it is in this group
- The name "read_url" says "read": a word for reading.
Description, as the server wrote it Render a URL in a real headless browser (JavaScript executed) and return clean, LLM-ready markdown. Use this when fetch() gives you an empty shell or a bot wall. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http sausage-web https://x402.professorsausages.com/mcp/webRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__sausage-web__find_data",
"mcp__sausage-web__read_url"
],
"ask": [
"mcp__sausage-web__pricing",
"mcp__sausage-web__request_data",
"mcp__sausage-web__pdf_extract",
"mcp__sausage-web__image_to_text",
"mcp__sausage-web__news",
"mcp__sausage-web__news_poll",
"mcp__sausage-web__news_batch",
"mcp__sausage-web__weather",
"mcp__sausage-web__holidays",
"mcp__sausage-web__timezone"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as sausage-web. Review it before you use it.