baconservices-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BACON_PAY_TO | No | Only with base-sepolia: the test copy's receiving address. | |
| BACON_API_URL | No | Only with base-sepolia: the test copy's address. | |
| BACON_CONFIRM | No | auto: ask before each payment when the host can; always: refuse to pay when it can't; never: don't ask (for unattended agents; the limits still apply). | auto |
| BACON_NETWORK | No | base (real USDC, baconservices.com) or base-sepolia (test USDC, a test copy of Bacon). | base |
| BACON_RPC_URL | No | RPC used to check your USDC balance before paying. | https://mainnet.base.org |
| BACON_LEDGER_DIR | No | Where the spend ledger lives. | ~/.baconservices-mcp |
| BACON_MAX_PER_DAY | No | Most spent in any rolling 24 hours, across all processes and restarts. | 5.00 |
| BACON_MAX_PER_CALL | No | Largest single payment, in USDC. | 0.50 |
| BACON_MAX_PER_SESSION | No | Most this server process may spend. | 1.00 |
| BACON_WALLET_KEY_FILE | No | Path to a file containing the buyer wallet's private key. | |
| BACON_DISCLOSE_BALANCE | No | true adds the exact balance and the wallet address to wallet_status. | false |
| BACON_WALLET_PRIVATE_KEY | No | The buyer wallet's private key itself (set only one of the two: BACON_WALLET_KEY_FILE or BACON_WALLET_PRIVATE_KEY). Without either, the free tools still work. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Bacon Services sells image operations to agents per call, paid in USDC over x402 from the buyer's own wallet. Call list_services or quote first; paid tools state their price, and the buyer's per-call, per-session and daily limits are enforced locally before anything is signed.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_servicesA | Lists what Bacon Services sells to agents right now, from its live catalog: each service's price in USDC, network, output, input limits, and whether this installed package can run it (and as which tool). Free. |
| quoteA | Gets Bacon's current price for one service without paying, and says whether your spending limits and wallet allow it. Free; nothing is signed. |
| wallet_statusA | Shows the payment network, whether a wallet is configured, your spending limits and what is left of them, and whether the wallet can afford each service (yes/no). Free. The exact balance is shown only if the buyer enabled BACON_DISCLOSE_BALANCE. |
| remove_backgroundA | Removes the background from one photo and returns the subject on a transparent background as a PNG, at the photo's own size. Costs 0.05 USDC per call (real money) on Base, paid from the buyer's wallet over x402 after the buyer's spending limits are checked. Input: PNG, JPEG, WEBP, up to 8 MB, at most 4096 px. Give exactly one of image_url or image_path. Output: image/png, as a download link (and a file with save_to). |
| optimize_imageA | Resizes one image so its longest side is at most max_width pixels (never enlarging it) and encodes it as WebP at the given quality. Transparency is kept; metadata is not carried over. Costs 0.01 USDC per call (real money) on Base, paid from the buyer's wallet over x402 after the buyer's spending limits are checked. Input: PNG, JPEG, WEBP, up to 8 MB, at most 8000 px. Give exactly one of image_url or image_path. Output: image/webp, as a download link (and a file with save_to). |
| image_paletteA | Returns the colours one image is mostly made of, as JSON: up to count colours, most common first, each a hex value with its share of the image and whether it is a neutral. Costs 0.01 USDC per call (real money) on Base, paid from the buyer's wallet over x402 after the buyer's spending limits are checked. Input: PNG, JPEG, WEBP, up to 8 MB, at most 4096 px. Give exactly one of image_url or image_path. Output: JSON, returned in the tool result. |
| brand_from_urlA | Reads one public web page and returns the brand it publishes about itself, as JSON: name, description, logo image URLs, colours, fonts and social profiles. No JavaScript runs; robots.txt is respected. Costs 0.03 USDC per call (real money) on Base, paid from the buyer's wallet over x402 after the buyer's spending limits are checked. Give url: one public web page (http or https, standard ports). Output: JSON, returned in the tool result. |
| page_metadataA | Reads one public web page and returns what it tells search engines and link previews, as JSON: title and description with lengths, canonical, redirects, robots rules, Open Graph and Twitter cards, headings, JSON-LD types and a list of SEO issues. No JavaScript runs; robots.txt is respected. Costs 0.01 USDC per call (real money) on Base, paid from the buyer's wallet over x402 after the buyer's spending limits are checked. Give url: one public web page (http or https, standard ports). Output: JSON, returned in the tool result. |
| accessibility_checkA | An automated WCAG check of one public web page (axe-core), as JSON: each failing rule with its impact, WCAG criteria, element count and examples; what needs review; and the criteria a person must test. Not a certification of WCAG or ADA conformance. Scripts on the page do not run; robots.txt is respected. Costs 0.05 USDC per call (real money) on Base, paid from the buyer's wallet over x402 after the buyer's spending limits are checked. Give url: one public web page (http or https, standard ports). Output: JSON, returned in the tool result. |
| vectorize_imageA | Traces one PNG, JPEG or WebP image into an SVG of filled paths with up to colors flat colours. Best for logos, icons and flat artwork; a photo comes back as a stylised poster. The SVG keeps the image's width and height (capped at 4096). Costs 0.05 USDC per call (real money) on Base, paid from the buyer's wallet over x402 after the buyer's spending limits are checked. Input: PNG, JPEG, WEBP, up to 8 MB, at most 8000 px. Give exactly one of image_url or image_path. Output: image/svg+xml, as a download link (and a file with save_to). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool maps to a distinct operation: four clearly separate image transforms (palette extraction, optimization, background removal, vectorization) and three distinct page analyses (brand data, SEO metadata, WCAG checks). The one soft overlap is brand_from_url vs page_metadata, since both fetch the same page and return overlapping metadata, but their stated outputs (brand assets vs SEO/preview signals) are different enough for correct selection.
All names use consistent snake_case, but the conventions are mixed: about half are verb_noun (list_services, optimize_image, remove_background, vectorize_image) and half are noun_phrases (image_palette, page_metadata, wallet_status, accessibility_check). Names remain readable and largely self-explanatory, but an agent cannot infer the pattern from one name to another.
Ten tools is well within the ideal range and each one earns its place: four image services, three page-analysis services, plus catalog/quote/wallet tooling. No tool looks like filler or a near-duplicate.
The payment lifecycle is well covered (list_services, quote, wallet_status plus per-call pricing) and the service surface is coherent for an image/web analysis catalog. Minor gaps: no way to set or adjust spending limits, no transaction history/receipts, and result retrieval depends on save_to rather than a job-status tool, but these are workable.