Koskamo

Agent Utility Suite MCP

Provides AI agents with tools to query SEC filings, screen for financial red flags, perform web searches, and check crypto wallet safety. It operates on a pay-per-call model using the x402 protocol on Base, requiring no API keys or accounts.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Agent Utility Suite MCP logo, by vanakendigitalCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by vanakendigital
MCP endpoint (Streamable HTTP)
https://x402-agent-api.onrender.com/mcp
Vendor documentation

What its tools do

41 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

41 of 41 have a description · 41 of 41 declare behavior hints · 41 of 41 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Query SEC filings for risk factors and MD&A
  • Screen portfolios for market red flags
  • Search the web and read results as Markdown
  • Check crypto wallet and token safety

Source and maintenance

Community listingRegistry 1.12.0
Maintenance checked

Protocol and capabilities

Server
x402-agent-api 1.12.0
MCP protocol negotiated in check
2025-11-25
Tools
41 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

SEC filings and web data for AI agents: read any section of a US public company's 10-K or 10-Q (risk factors, MD&A, …) since 2001, see what changed in it since last year, its latest 8-K events and press releases, a one-call due-diligence dossier with red flags (or a batch screen of 10), any fund's 13F holdings and quarterly changes, new IPO and SPAC filings, market-wide red-flag alerts (restatements, auditor changes, late filings, insider buying), today's earnings releases with their key figures, and a free index of its filings; turn any web page into clean Markdown; vet a vendor, customer or payee in one call (OFAC, company identity, domain, wallet); check whether a crypto wallet or token is safe to pay or trade (OFAC, owner powers, liquidity), new Base token launches with risk verdicts, and whether an x402 endpoint is safe to pay; profile a domain's email setup; HVAC engineering calculations (psychrometrics, coil loads, duct sizing) with every step shown. No accounts or API keys: pay per call in USDC with x402. Start with the free sec_list_filings tool: it lists a company's filings, or with no company the latest filings across the market (e.g. today's earnings 8-Ks), and gives, for each, the exact paid call that reads it. free_sample shows any paid tool's real output for free, token_launches_peek counts new Base token launches and sec_alerts_peek counts new SEC red-flag alerts, both free. Every other tool costs a fixed USDC amount per call, paid with x402 (protocol version 2) inside MCP: call a tool without payment to receive an error result whose structuredContent is the x402 PaymentRequired (price, network, payTo); sign one of its `accepts` and call again with the payment in _meta["x402/payment"]. The receipt comes back in _meta["x402/payment-response"]. @x402/mcp clients do this automatically. Invalid input and failed calls are never charged. Which tool: What filings does a company have? Which year's report or which 8-K do I want? → sec_list_filings (free). What was filed with the SEC since Friday / this morning? Which companies reported earnings or a CEO change today? → sec_list_filings (free). What are a company's risk factors? What did management say in the MD&A? What was in an earlier year's report? → sec_filing_section ($0.01). What changed in a company's risk factors (or MD&A, business, legal proceedings) since last year? Which new risks were added? → sec_section_changes ($0.04). I need several sections of the same report (e.g. risk factors and MD&A). → sec_filing_sections ($0.015). What are a company's revenue, profit, EPS, cash, debt and free cash flow over the last years or quarters? → sec_financials ($0.005). Are a company's insiders (CEO, CFO, directors) buying or selling its stock? → sec_insider_trades ($0.005). What happened at a company lately: earnings, CEO/CFO changes, acquisitions, cybersecurity incidents? → sec_recent_events ($0.01). Which companies' SEC filings mention a phrase ("material weakness", "tariff", a product or a person)? → sec_full_text_search ($0.01). Brief me on a public company: is anything wrong (restatements, auditor changes, losses, insider selling)? Financials, recent events and insiders in one call. → company_dossier ($0.03). Screen a list of tickers (a portfolio or watchlist) for red flags in one call, worst first. → company_dossier_batch ($0.15). Who reported earnings today (or this morning), and what were the headline numbers? Optionally just my watchlist. → sec_earnings_today ($0.01). Did anything serious just get filed anywhere in the market (restatements, auditor changes, late filings, CEO exits, insider buying)? (free counter for polling) → sec_alerts_peek (free). Show me the new SEC red-flag alerts across the market or for my watchlist (poll with the cursor). → sec_market_alerts ($0.005). What does a hedge fund or famous investor own (Buffett/Berkshire, Burry, Cathie Wood, Bridgewater)? What did it buy or sell last quarter? → sec_fund_holdings ($0.01). Give me a morning market briefing: overnight SEC red flags, earnings, IPOs and the macro numbers (optionally for my watchlist). → daily_briefing ($0.025). Send me that market briefing every morning (webhook, 30 days). → daily_briefing_subscription ($3.00). Which companies just filed for an IPO, which IPOs priced, any new SPACs? (poll with the cursor) → sec_ipo_filings ($0.005). Who is this company (from a domain, name or ticker): what it does, HQ, founders, CEO, employees, ticker? → company_profile ($0.005). Is this person, company or crypto wallet on a US sanctions (OFAC) list? → sanctions_screen ($0.005). Can I do business with, onboard or pay this vendor, customer or wallet? (KYB: sanctions, company identity, domain age and email, wallet risk, one verdict) → counterparty_check ($0.02). Where are US interest rates, inflation and unemployment right now? → economic_indicators ($0.003). What does this web page, article, PDF, feed or documentation say? → scrape_markdown ($0.002). Read several pages at once, or find a site's pages (pricing, docs, blog) first? → site_map ($0.002). Is it safe to pay this wallet address (an x402 payTo, a vendor, another agent)? Is it sanctioned, new, a contract? → wallet_risk_check ($0.005). What crypto transactions did this wallet make this tax year? Give me a CPA-ready list (income, swaps, transfers) as CSV. → crypto_tax_ledger ($0.02). Is this token safe, yes or no? Give me a grade and a one-line verdict (rug-pull / scam screen). → token_verdict ($0.009). Is this token a scam? Can the owner mint, freeze or tax it? Is there liquidity to sell? → token_risk_check ($0.005). What exactly does a paid tool return? (free, real output for an example input) → free_sample (free). Did any new tokens launch on Base since my last check? (free counter for polling) → token_launches_peek (free). Which tokens just launched on Base, and which look safe? (poll with since_block) → new_token_launches ($0.01). Is it safe to pay this x402 endpoint: valid challenge, fair price, clean payTo wallet, real usage? → x402_preflight ($0.003). Is this email address real and safe to send to? → email_verify ($0.001). Who hosts a company's email, is SPF/DMARC set up, which SaaS does it use? → domain_enrich ($0.004). HVAC: what are the dew point, enthalpy, RH and humidity ratio of air (from any two properties, at any elevation)? → hvac_psychrometrics ($0.002). HVAC: what is the cooling or heating coil load (sensible, latent, tons), or the mixed air with outdoor air? → hvac_coil_load ($0.002). HVAC: what size duct for this airflow (equal friction or velocity), or what friction and velocity in this duct? → hvac_duct_size ($0.002). Inputs are forgiving: name a company by ticker, CIK or name; sections as "Risk Factors", "MD&A" or "Item 1A"; 8-K events as codes (5.02) or words (earnings, executive changes); unknown fields are ignored. Invalid input returns a valid example, and failed calls are never charged. Every paid result ends with `next_calls`: the natural follow-up questions as ready-to-send calls with their price. Live reliability (answers, failures and latency per tool) is published at /status.

Tools

41 advertised

sec_list_filings — SEC filings index and latest filings feed (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free, no payment needed. Two uses: (1) with a ticker, CIK or company name, a US public company's 10-K (annual), 10-Q (quarterly) and 8-K (material event) filings from SEC EDGAR, newest first, back to 2001; (2) with no company, the latest filings across all companies from EDGAR's live feed (about the last few business days): "Which companies reported earnings since Friday?", "Who announced a CEO change today?", "Which 10-Qs were filed this morning?". Each filing has the company, ticker, form, filing date (and acceptance time in the live feed), sec.gov link, the sections sec_filing_section can extract (Risk Factors, MD&A, Business, Legal Proceedings, Market Risk, Cybersecurity) and the event items of each 8-K (earnings 2.02, executive changes 5.02, deals 1.01, cybersecurity incidents 1.05, …). Filter by form, 8-K `items` (codes or words like "earnings") and date. Every filing carries `next_call`: the exact paid tool call, with arguments and price, that returns its text. Up to 50 filings per call. Rate-limited per client.

sec_list_filings input schema
{
  "type": "object",
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "forms": {
      "type": "array",
      "items": {
        "enum": [
          "10-K",
          "10-Q",
          "8-K"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Which filings to list: 10-K (annual), 10-Q (quarterly), 8-K (material events). Default: all three."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\d\\.\\d{2}$"
      },
      "minItems": 1,
      "description": "Only 8-Ks reporting any of these items, e.g. [\"2.02\"] for earnings, [\"5.02\"] for executive changes, [\"1.05\"] for cybersecurity incidents (words like \"earnings\" work too). Implies forms [\"8-K\"]."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "How many filings to return, newest first (1-50, default 20)."
    },
    "since": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only filings filed on or after this date (YYYY-MM-DD). Reaches back to 2001 for one company; the market-wide feed covers about the last few business days."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`; leave all three out for the latest filings of all companies."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    }
  },
  "additionalProperties": false
}
sec_list_filings annotations
{
  "title": "SEC filings index and latest filings feed (free)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
free_sample — Free sample of any paid tool
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free, no payment needed. Returns a paid tool's real, live answer to its documented example input (refreshed every 5 minutes to 6 hours depending on the tool), the price of a call with your own input, and where to send it. With no `tool`, lists every paid tool with the URL of its sample. Use it to check a tool's output format and quality before paying, or to test an integration. Also answers GET, e.g. /api/v1/samples?tool=token_risk_check. Rate-limited per client.

free_sample input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "tool": {
      "type": "string",
      "maxLength": 60,
      "minLength": 2,
      "description": "The paid tool to sample, by name or path, e.g. \"token_risk_check\" or \"email-verify\". Leave out to list every tool with its sample."
    }
  },
  "additionalProperties": false
}
free_sample annotations
{
  "title": "Free sample of any paid tool",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
token_launches_peek — How many tokens launched on Base since a block (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free, no payment needed. Counts the pools created against WETH, ETH or USDC on Uniswap v2, v3, v4 and Aerodrome on Base since `since_block` (or in the last `minutes`) and how many distinct tokens they are for, by DEX, with the latest block. Counts only: the token addresses, names and risk verdicts come with the paid new_token_launches, whose ready-to-send call is included when there is something new. Built for polling bots: peek for free, pay only when new_tokens > 0. Rate-limited per client.

token_launches_peek input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "minutes": {
      "type": "integer",
      "default": 60,
      "maximum": 360,
      "minimum": 1,
      "description": "How far back to look, in minutes (1-360, default 60). Ignored when since_block is given."
    },
    "since_block": {
      "type": "integer",
      "maximum": 9007199254740991,
      "description": "Only pools created after this Base block: pass the previous answer's latest_block when polling (at most 6 hours back).",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
token_launches_peek annotations
{
  "title": "How many tokens launched on Base since a block (free)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
sec_alert_subscription_status — Check or cancel an SEC alert subscription (free)
Advertised by the server during the last successful anonymous check.

Free, no payment needed. Give the `subscription_id` and `signing_secret` from sec_alert_subscription to see whether it is active, when it expires, how many alerts were delivered and the last delivery error, or set `cancel: true` to stop deliveries (no refund).

sec_alert_subscription_status input schema
{
  "type": "object",
  "required": [
    "subscription_id",
    "signing_secret"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "cancel": {
      "type": "boolean",
      "description": "true stops deliveries now (no refund)."
    },
    "signing_secret": {
      "type": "string",
      "maxLength": 128,
      "minLength": 16,
      "description": "From the subscribe answer."
    },
    "subscription_id": {
      "type": "string",
      "pattern": "^sub_[a-f0-9]{24}$",
      "description": "From the subscribe answer."
    }
  },
  "additionalProperties": false
}
sec_alert_subscription_status annotations
{
  "title": "Check or cancel an SEC alert subscription (free)",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
sec_alerts_peek — How many new SEC alerts (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free, no payment needed. Counts the alerts sec_market_alerts would return for the same `since`, `levels`, `types` and `tickers`, by level and type, with a new `cursor`. Counts only: the companies, filings and excerpts come with the paid sec_market_alerts, whose ready-to-send call is included when there is something new. Built for polling: peek for free every few minutes, pay only when new_alerts > 0. Rate-limited per client.

sec_alerts_peek input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "since": {
      "type": "string",
      "description": "Only alerts found after this time: pass the previous answer's `cursor` to get just what is new. Default: every alert in the store (about the last day)."
    },
    "types": {
      "type": "array",
      "items": {
        "enum": [
          "bankruptcy",
          "restatement",
          "delisting_notice",
          "late_annual_report",
          "auditor_change",
          "cybersecurity_incident",
          "impairment",
          "debt_acceleration",
          "change_in_control",
          "late_quarterly_report",
          "insider_purchase",
          "leadership_change",
          "earnings",
          "material_agreement",
          "acquisition_or_disposal",
          "restructuring",
          "unregistered_share_sale"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Only these alert types: bankruptcy, restatement, delisting_notice, late_annual_report, auditor_change, cybersecurity_incident, impairment, debt_acceleration, change_in_control, late_quarterly_report, insider_purchase, leadership_change, earnings, material_agreement, acquisition_or_disposal, restructuring, unregistered_share_sale. Default: all."
    },
    "levels": {
      "type": "array",
      "items": {
        "enum": [
          "red",
          "amber",
          "green",
          "info"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Only these levels: red (restatement, delisting, bankruptcy, late 10-K), amber, green (insider buying), info (earnings, leadership changes, deals). Default: all."
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$"
      },
      "maxItems": 200,
      "minItems": 1,
      "description": "A watchlist: only alerts for these tickers. Default: the whole market."
    }
  },
  "additionalProperties": false
}
sec_alerts_peek annotations
{
  "title": "How many new SEC alerts (free)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
sec_filing_section — SEC 10-K / 10-Q section extractor
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers questions like "What are Tesla's risk factors?", "What did Apple's MD&A say about margins?" or "How has Microsoft's cybersecurity disclosure changed since 2023?". Returns exactly one section of a US public company's 10-K (annual) or 10-Q (quarterly) report from SEC EDGAR as clean text, ready for an LLM: Risk Factors (Item 1A), Management's Discussion and Analysis (MD&A), Business, Legal Proceedings, Market Risk, or Cybersecurity. Look up by stock ticker or CIK. Defaults to the latest filing; pass `fiscal_year` (2001 on) for an earlier year's report, or `accession_number` for an exact filing (the free sec_list_filings tool lists them, with the sections each one has). For several sections of one filing use sec_filing_sections; for what changed since last year, sec_section_changes. The table of contents, page numbers, hidden XBRL data and HTML are removed; tables are kept as readable rows. Includes the filing date, fiscal period, accession number and sec.gov link for citation. Use it for investment research, due diligence, competitor analysis or risk monitoring without downloading a 100-page filing. Sections up to 200,000 characters. If the filing's item only points elsewhere ("See Note 12"), you get 404 SECTION_INCORPORATED_BY_REFERENCE with that pointer, free. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.01 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_filing_section input schema
{
  "type": "object",
  "required": [
    "section"
  ],
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "form": {
      "enum": [
        "10-K",
        "10-Q"
      ],
      "type": "string",
      "description": "Annual report (10-K, the default) or quarterly report (10-Q). With `accession_number`, taken from that filing."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    },
    "section": {
      "enum": [
        "business",
        "risk_factors",
        "cybersecurity",
        "legal_proceedings",
        "mda",
        "market_risk"
      ],
      "type": "string",
      "description": "Which section to return: risk_factors, mda (Management's Discussion and Analysis), business, legal_proceedings, market_risk, or cybersecurity (10-K only, filings from late 2023 on)."
    },
    "fiscal_year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2001,
      "description": "Return the report whose fiscal period ends in this calendar year instead of the latest one, e.g. 2022 for Apple's 10-K for the year ended September 24, 2022. For a 10-Q, the latest quarter ending in that year. EDGAR has HTML filings from 2001 on."
    },
    "accession_number": {
      "type": "string",
      "pattern": "^\\d{10}-\\d{2}-\\d{6}$",
      "description": "Return the section from this exact 10-K or 10-Q filing of the company, e.g. 0000320193-22-000108."
    }
  },
  "additionalProperties": false
}
sec_filing_section annotations
{
  "title": "SEC 10-K / 10-Q section extractor",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_filing_sections — SEC 10-K / 10-Q sections, several at once
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers several questions about one report at once, e.g. "What are Nvidia's risks, and what does management say about results?". Returns 2 or 3 sections of the same 10-K or 10-Q from SEC EDGAR as clean text, in one call: Risk Factors, MD&A, Business, Legal Proceedings, Market Risk, Cybersecurity. Same inputs and output per section as sec_filing_section (latest filing, a `fiscal_year` since 2001, or an exact `accession_number`; by ticker, CIK or company name), at $0.015 for up to three sections instead of $0.01 each. Sections the filing does not contain are listed in `not_found`; if none can be read you get 404, free. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.015 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_filing_sections input schema
{
  "type": "object",
  "required": [
    "sections"
  ],
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "form": {
      "enum": [
        "10-K",
        "10-Q"
      ],
      "type": "string",
      "description": "Annual report (10-K, the default) or quarterly report (10-Q). With `accession_number`, taken from that filing."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    },
    "sections": {
      "type": "array",
      "items": {
        "enum": [
          "business",
          "risk_factors",
          "cybersecurity",
          "legal_proceedings",
          "mda",
          "market_risk"
        ],
        "type": "string"
      },
      "maxItems": 3,
      "minItems": 2,
      "description": "2 or 3 sections to read from the same filing: risk_factors, mda, business, legal_proceedings, market_risk, cybersecurity. Business and cybersecurity exist only in 10-Ks."
    },
    "fiscal_year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2001,
      "description": "Return the report whose fiscal period ends in this calendar year instead of the latest one, e.g. 2022 for Apple's 10-K for the year ended September 24, 2022. For a 10-Q, the latest quarter ending in that year. EDGAR has HTML filings from 2001 on."
    },
    "accession_number": {
      "type": "string",
      "pattern": "^\\d{10}-\\d{2}-\\d{6}$",
      "description": "Return the section from this exact 10-K or 10-Q filing of the company, e.g. 0000320193-22-000108."
    }
  },
  "additionalProperties": false
}
sec_filing_sections annotations
{
  "title": "SEC 10-K / 10-Q sections, several at once",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_section_changes — SEC 10-K year-over-year changes
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What changed in Tesla's risk factors this year?", "Which new risks did Apple add?" or "How did Microsoft's MD&A change since 2022?". Compares one section of a company's 10-K with the same section of an earlier 10-K from SEC EDGAR, paragraph by paragraph: paragraphs added (new risk factors appear here), removed, and edited, each edit with a word-level diff marking deletions [-like this-] and insertions {+like this+}, plus a summary (counts and the share of text unchanged). Moved but identical paragraphs count as unchanged. Defaults to the latest 10-K against the one before it; pass `fiscal_year` or `accession_number` for the newer report and `compare_to_fiscal_year` for the older one (2001 on). Sections: Risk Factors, MD&A, Business, Legal Proceedings, Market Risk, Cybersecurity (filed from late 2023 on). By ticker, CIK or company name, with sec.gov links for both filings. Use it for risk monitoring, due diligence and investment research without reading two 100-page filings. If either report lacks the section you get 404, free. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.04 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_section_changes input schema
{
  "type": "object",
  "required": [
    "section"
  ],
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    },
    "section": {
      "enum": [
        "business",
        "risk_factors",
        "cybersecurity",
        "legal_proceedings",
        "mda",
        "market_risk"
      ],
      "type": "string",
      "description": "Which 10-K section to compare: risk_factors, mda, business, legal_proceedings, market_risk or cybersecurity."
    },
    "fiscal_year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2001,
      "description": "The newer report: the 10-K whose fiscal year ends in this year. Default: the latest 10-K."
    },
    "accession_number": {
      "type": "string",
      "pattern": "^\\d{10}-\\d{2}-\\d{6}$",
      "description": "The newer report as an exact 10-K filing, instead of `fiscal_year`."
    },
    "compare_to_fiscal_year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2001,
      "description": "The older report to compare against: the 10-K for this fiscal year. Default: the 10-K just before the newer one."
    }
  },
  "additionalProperties": false
}
sec_section_changes annotations
{
  "title": "SEC 10-K year-over-year changes",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_recent_events — SEC 8-K material events
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What happened at this company lately?": did the CEO or CFO leave, what were the latest earnings, was there an acquisition, major contract or cyber incident. Returns a US public company's most recent 8-K filings from SEC EDGAR, newest first: the material events companies must report within four business days, such as earnings releases (Item 2.02), CEO, CFO and director changes (5.02), material agreements and acquisitions (1.01, 2.01), cybersecurity incidents (1.05), impairments, auditor changes and shareholder votes. Each event has its item codes with official titles, the 8-K text as clean prose, and the text of its press-release exhibits (EX-99), e.g. the full earnings release. Filter by item codes and filing date, or ask for one exact 8-K by `accession_number` (the free sec_list_filings tool lists them); up to 10 events per call. Look up by stock ticker or CIK. Use it for event monitoring, news and earnings agents, due diligence or trading research, with sec.gov links for citation. If no 8-K matches, you get 404 FILING_NOT_FOUND, free. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.01 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_recent_events input schema
{
  "type": "object",
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\d\\.\\d{2}$"
      },
      "maxItems": 20,
      "minItems": 1,
      "description": "Only events reporting one of these 8-K items, e.g. [\"5.02\"] for executive and director changes, [\"2.02\"] for earnings releases, [\"1.01\", \"2.01\"] for deals, [\"1.05\"] for cybersecurity incidents."
    },
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1,
      "description": "How many events to return, newest first (1-10, default 5)."
    },
    "since": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only events filed on or after this date (YYYY-MM-DD)."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    },
    "accession_number": {
      "type": "string",
      "pattern": "^\\d{10}-\\d{2}-\\d{6}$",
      "description": "Return only this 8-K, e.g. one found with the free sec_list_filings tool."
    },
    "include_exhibits": {
      "type": "boolean",
      "default": true,
      "description": "Include the text of press-release exhibits (EX-99), e.g. the earnings release. Default true."
    }
  },
  "additionalProperties": false
}
sec_recent_events annotations
{
  "title": "SEC 8-K material events",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_financials — SEC financial statements (XBRL)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What were Apple's revenue and net income over the last five years?", "Is Tesla's free cash flow positive?" or "How fast is Nvidia growing quarter over quarter?". Returns a US public company's key financial-statement figures for its latest fiscal years (annual, from 10-Ks) or single quarters (quarterly), newest first, from the XBRL data companies file with the SEC: income statement (revenue, cost of revenue, gross profit, R&D, SG&A, operating income, pretax income, tax, net income, basic and diluted EPS, diluted shares), balance sheet (cash, current and total assets and liabilities, long-term debt, equity) and cash flow (operating cash flow, capex, free cash flow, dividends, buybacks), plus gross, operating and net margins and year-over-year revenue growth. Fourth quarters and single-quarter cash flows, which companies only report as full-year or year-to-date totals, are derived and flagged in `derived`. Each period cites the latest filing that reports it, so restated figures replace original ones. Up to 20 periods per call, back to about 2009; `fiscal_year` reaches earlier years. By ticker, CIK or company name. US-GAAP filers only (not IFRS 20-F filers); values in USD. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_financials input schema
{
  "type": "object",
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 20,
      "minimum": 1,
      "description": "How many periods to return, newest first (1-20, default 5)."
    },
    "period": {
      "enum": [
        "annual",
        "quarterly"
      ],
      "type": "string",
      "default": "annual",
      "description": "Fiscal years from 10-Ks (annual, the default) or single quarters (quarterly)."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    },
    "fiscal_year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2001,
      "description": "Return periods up to this fiscal year (the calendar year the fiscal year ends in) instead of the latest, e.g. 2019."
    }
  },
  "additionalProperties": false
}
sec_financials annotations
{
  "title": "SEC financial statements (XBRL)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_insider_trades — SEC Form 4 insider trades
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Are Nvidia's executives selling?", "Did any Intel insider buy shares on the open market this year?" or "What did Tesla's CFO do with his vested stock?". Returns a US public company's latest Form 4 filings from SEC EDGAR, the reports officers, directors and 10% owners must file within two business days of trading its stock: who traded (name, role, title), each transaction with its date, code and plain-English meaning, shares, price, dollar value, holdings after, and direct or indirect ownership, plus footnotes. A summary totals open-market purchases and sales (shares, dollars, which insiders) and separates sales under pre-arranged Rule 10b5-1 plans and sales that only cover taxes on vesting stock, which say little about insiders' views. Filter by filing date or transaction code (e.g. ["P"] for open-market purchases), optionally with option and RSU transactions; up to 40 filings per call. By ticker, CIK or company name. If nothing matches you get 404, free. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_insider_trades input schema
{
  "type": "object",
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "limit": {
      "type": "integer",
      "default": 15,
      "maximum": 40,
      "minimum": 1,
      "description": "How many Form 4 filings to return, newest first (1-40, default 15)."
    },
    "since": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only filings filed on or after this date (YYYY-MM-DD)."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    },
    "transaction_codes": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z]$"
      },
      "minItems": 1,
      "description": "Only filings with these transaction codes, e.g. [\"P\"] for open-market purchases, [\"P\", \"S\"] for open-market buying and selling. Default: all filings."
    },
    "include_derivative": {
      "type": "boolean",
      "default": false,
      "description": "Also list derivative transactions (option and RSU grants, exercises, expirations). Default false."
    }
  },
  "additionalProperties": false
}
sec_insider_trades annotations
{
  "title": "SEC Form 4 insider trades",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_full_text_search — SEC full-text search
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Which companies disclosed a material weakness this year?", "Who mentions tariffs in their 10-Q risk factors?", "Which filings name this executive, product or supplier?" or "Has this company ever mentioned a going-concern doubt?". Searches the full text of SEC EDGAR filings and their exhibits since 2001 (EDGAR Full-Text Search): put exact phrases in double quotes. Filter by form (10-K, 10-Q, 8-K, S-1, DEF 14A, ...), by company (ticker, CIK or name) and by filing date. Each hit gives the company, ticker, CIK, form, document type (e.g. EX-99.1), filing date, period, accession number, document and filing-index links, 8-K items, location, and `next_call`: the paid call that reads it (a 10-K/10-Q section, the 8-K event, or the document as Markdown). Also returns the total hit count and the companies and forms with the most hits across all pages. Up to 50 results per call; page with `offset`. No match is a 404, free. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.01 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_full_text_search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "forms": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z0-9][A-Z0-9 ./-]{0,15}$"
      },
      "maxItems": 20,
      "minItems": 1,
      "description": "Only these form types, e.g. [\"10-K\", \"10-Q\"] or [\"8-K\"], [\"S-1\"], [\"DEF 14A\"]. Default: all forms."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "How many documents to return, most relevant first (1-50, default 20)."
    },
    "query": {
      "type": "string",
      "maxLength": 500,
      "minLength": 2,
      "description": "What to search for in the filings' text. Put an exact phrase in double quotes, e.g. \"\\\"material weakness\\\"\" or \"\\\"going concern\\\" Nasdaq\"; words outside quotes must all appear."
    },
    "since": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only documents filed on or after this date (YYYY-MM-DD). Full-text search covers 2001 on."
    },
    "until": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only documents filed on or before this date (YYYY-MM-DD)."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 9900,
      "minimum": 0,
      "description": "Skip this many results; pass the previous response's next_offset to page through more."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    }
  },
  "additionalProperties": false
}
sec_full_text_search annotations
{
  "title": "SEC full-text search",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
company_profile — Company profile
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Who is behind stripe.com?", "What does this company do, where is it based and who runs it?" or "Is it public, and what is its ticker?". Give a website domain (or any URL), a company name, a ticker or a CIK. Returns one profile combining: SEC EDGAR for public companies (legal name, tickers, exchanges, CIK, SIC industry, state of incorporation, fiscal year end, business address, phone, filer category, former names), Wikidata (founded, founders, CEO, headquarters, country, employees with date, industries, official website), a short Wikipedia description (with its URL for attribution), and the domain's email provider (from MX records) and registration date and registrar (RDAP). Works for private companies too (Wikidata and the domain). `sources` says which sources answered. For public companies, next_calls lead to their financials, 8-K events and insider trades. A name matching several SEC registrants returns the candidates, free; no company found is a 404, free. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

company_profile input schema
{
  "type": "object",
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "domain": {
      "type": "string",
      "maxLength": 253,
      "minLength": 3,
      "description": "The company's website domain or any URL on it, e.g. \"stripe.com\". Use this, `company`, `ticker` or `cik`."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    }
  },
  "additionalProperties": false
}
company_profile annotations
{
  "title": "Company profile",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
company_dossier — Company dossier (SEC due diligence)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Give me a quick due-diligence read on NVDA", "Is anything wrong at this company?" or "Brief me on Apple before the market opens". Give a ticker, company name, CIK or website domain. One call returns: who the company is (industry, HQ, CEO, founded, employees, description), four fiscal years of revenue, operating and net income, EPS, operating and free cash flow, cash, debt and equity with margins and growth (SEC XBRL), the latest quarter with year-over-year growth, the last 5 8-K events with item titles and excerpts, insider open-market buying and selling from the latest Form 4s (10b5-1 and tax sales set apart), the latest 10-K/10-Q, and flags: RED for restatements (8-K 4.02), delisting notices, bankruptcy and late 10-Ks; AMBER for auditor changes, cybersecurity incidents, impairments, late 10-Qs, net losses, cash burn, negative equity and shrinking revenue; GREEN for profitable growth and insider buying. `summary` says it all in a few sentences; every flag cites its filing. Replaces five separate calls (company_profile, sec_financials twice, sec_recent_events, sec_insider_trades). next_calls lead to what changed in the risk factors and the latest earnings release. Unknown, ambiguous or private companies are not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.03 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

company_dossier input schema
{
  "type": "object",
  "properties": {
    "cik": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,10}$"
        },
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      ],
      "description": "SEC Central Index Key, e.g. 320193. Use this, `ticker` or `company`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "domain": {
      "type": "string",
      "maxLength": 253,
      "minLength": 3,
      "description": "The company's website, e.g. \"nvidia.com\". Use this, `ticker`, `cik` or `company`."
    },
    "ticker": {
      "type": "string",
      "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$",
      "description": "US stock ticker, e.g. AAPL, MSFT, BRK-B. Use this, `cik` or `company`."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Company name, e.g. \"Apple\" or \"Coca-Cola\". Use this, `ticker` or `cik`; a name matching several companies returns their tickers, free."
    }
  },
  "additionalProperties": false
}
company_dossier annotations
{
  "title": "Company dossier (SEC due diligence)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
company_dossier_batch — Company dossiers in batch (portfolio screen)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Which of my holdings has a problem?" or "Screen these tickers for red flags before the open". Give up to 10 tickers, CIKs or company names. Returns a ranking (most red flags first, then amber) with each company's flags and one-paragraph summary, and every company's full dossier: profile, four fiscal years of financials and the latest quarter, the last five 8-K events, insider buying and selling over the latest 10 Form 4s, the latest 10-K/10-Q, and flags (RED: restatements, delisting notices, bankruptcy, late 10-Ks; AMBER: auditor changes, cybersecurity incidents, impairments, late 10-Qs, losses, cash burn, negative equity, shrinking revenue; GREEN: profitable growth, insider buying), each citing its filing. Priced by size: $0.03 for the first company and $0.025 for each further one (2 companies $0.055, 3 $0.08, 4 $0.105, 5 $0.13), capped at $0.15 for 6 to 10, always less than separate company_dossier calls. The 402 answer quotes the exact price for your list. Companies that cannot be found are listed in `failed`; if none can, you are not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.03 to $0.15 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

company_dossier_batch input schema
{
  "type": "object",
  "required": [
    "tickers"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "tickers": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
          },
          {
            "type": "integer",
            "maximum": 9007199254740991,
            "exclusiveMinimum": 0
          }
        ]
      },
      "maxItems": 10,
      "minItems": 1,
      "description": "Up to 10 companies: tickers (e.g. \"NVDA\"), CIKs (e.g. 320193) or exact company names."
    }
  },
  "additionalProperties": false
}
company_dossier_batch annotations
{
  "title": "Company dossiers in batch (portfolio screen)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_earnings_today — Today's earnings releases (SEC 8-K 2.02)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Who reported earnings this morning?", "How did the banks do today?" or "Did any of my holdings report?". Lists the earnings releases (8-K item 2.02, Results of Operations and Financial Condition) filed with the SEC on a day across all companies, newest first. For each: company, ticker, EDGAR acceptance time, the press release's headline, its highlights (subheadlines and the sentences carrying revenue, EPS, net income, margins and guidance figures), the opening paragraph, and links to the press release (EX-99.1) and the filing. Filter with a `tickers` watchlist; poll with `since` = the previous answer's `cursor` to get only new releases (the free sec_alerts_peek with types ["earnings"] counts them first). A day without releases (or none from the watchlist) is a free 404. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.01 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_earnings_today input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "date": {
      "type": "string",
      "pattern": "^(?:\\d{4}-\\d{2}-\\d{2}|latest)$",
      "description": "The filing day (YYYY-MM-DD, US Eastern), or \"latest\" for the most recent day with releases (e.g. on a weekend). Default: today. EDGAR's live feed reaches back a few business days."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 30,
      "minimum": 1,
      "description": "How many releases to read, newest first (1-30, default 10)."
    },
    "since": {
      "type": "string",
      "description": "Only releases EDGAR accepted after this time: pass the previous answer's `cursor` to get just the new ones."
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$"
      },
      "maxItems": 200,
      "minItems": 1,
      "description": "A watchlist: only releases from these tickers. Default: every company."
    }
  },
  "additionalProperties": false
}
sec_earnings_today annotations
{
  "title": "Today's earnings releases (SEC 8-K 2.02)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
sec_market_alerts — SEC red-flag alerts across the market
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Did anything bad just get filed?", "Alert me to restatements, auditor changes or CEO departures" or "Which insiders bought stock today?". Alerts from new SEC filings across all public companies, most serious first: RED (8-K item 4.02 restatements, 3.01 delisting notices, 1.03 bankruptcies, NT 10-K late annual reports), AMBER (4.01 auditor changes, 1.05 cybersecurity incidents, 2.06 impairments, 2.04 debt triggers, 5.01 changes in control, NT 10-Q), GREEN (open-market insider purchases of $100K or more, from Form 4s) and INFO (5.02 leadership changes, 2.02 earnings releases, 1.01 agreements, 2.01 deals, 2.05 restructurings, 3.02 unregistered share sales). Each alert has the company, ticker, EDGAR acceptance time, items, a text excerpt for red and amber 8-Ks, the filing link and the paid call that reads it in full. Filter by `levels`, `types` or a `tickers` watchlist. Built for polling: pass the previous answer's `cursor` as `since` to get only new alerts, and check the free sec_alerts_peek first so you pay only when there is something new. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_market_alerts input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "How many alerts to return, most serious first, then newest (1-50, default 20)."
    },
    "since": {
      "type": "string",
      "description": "Only alerts found after this time: pass the previous answer's `cursor` to get just what is new. Default: every alert in the store (about the last day)."
    },
    "types": {
      "type": "array",
      "items": {
        "enum": [
          "bankruptcy",
          "restatement",
          "delisting_notice",
          "late_annual_report",
          "auditor_change",
          "cybersecurity_incident",
          "impairment",
          "debt_acceleration",
          "change_in_control",
          "late_quarterly_report",
          "insider_purchase",
          "leadership_change",
          "earnings",
          "material_agreement",
          "acquisition_or_disposal",
          "restructuring",
          "unregistered_share_sale"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Only these alert types: bankruptcy, restatement, delisting_notice, late_annual_report, auditor_change, cybersecurity_incident, impairment, debt_acceleration, change_in_control, late_quarterly_report, insider_purchase, leadership_change, earnings, material_agreement, acquisition_or_disposal, restructuring, unregistered_share_sale. Default: all."
    },
    "levels": {
      "type": "array",
      "items": {
        "enum": [
          "red",
          "amber",
          "green",
          "info"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Only these levels: red (restatement, delisting, bankruptcy, late 10-K), amber, green (insider buying), info (earnings, leadership changes, deals). Default: all."
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$"
      },
      "maxItems": 200,
      "minItems": 1,
      "description": "A watchlist: only alerts for these tickers. Default: the whole market."
    }
  },
  "additionalProperties": false
}
sec_market_alerts annotations
{
  "title": "SEC red-flag alerts across the market",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
scrape_markdown — Web page to Markdown
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use it when an agent needs to read a web page, article, documentation, PDF, blog post, product or pricing page, news story or RSS feed. Returns the main content as clean Markdown ready for an LLM: navigation, ads, footers and sidebars removed (or `mode: "full"` for the whole page), real tables as Markdown tables, code blocks with their language, math as TeX, the real (not lazy-loaded placeholder) images, absolute links without same-page anchors, and no needless escaping. Also returns metadata from meta tags and JSON-LD (description, author, published and modified time, language, site name, canonical URL, image, schema.org type), the HTTP status, word and token counts, and optionally the page's links. PDFs come back as text by page (up to 100 pages, 15 MB; no OCR), RSS/Atom feeds as item lists, JSON pretty-printed, and JavaScript-built pages that embed their content as data (JSON-LD articleBody, Next.js) are read from it. Long pages are returned in parts of up to 100,000 characters: pass `next_offset` back as `offset`; `strip_link_urls` saves tokens. Bot checks ("Just a moment...") and pages with no readable text answer 422 and are not charged; JavaScript is not executed. No account or API key. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.002 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

scrape_markdown input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "Public http(s) URL to read: a web page, PDF, text, JSON or RSS/Atom feed, e.g. https://example.com/article."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "mode": {
      "enum": [
        "main",
        "full"
      ],
      "type": "string",
      "default": "main",
      "description": "main (default): the article or main content only. full: the whole page, including navigation and footers."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Start at this character of the Markdown; pass the previous response's next_offset to read a long page in parts."
    },
    "max_chars": {
      "type": "integer",
      "default": 100000,
      "maximum": 100000,
      "minimum": 1000,
      "description": "Return at most this many characters (1,000-100,000, default 100,000)."
    },
    "include_links": {
      "type": "boolean",
      "default": false,
      "description": "Also return the page's links as a list (url, text, internal). Default false."
    },
    "strip_link_urls": {
      "type": "boolean",
      "default": false,
      "description": "Write links as plain text in the Markdown (keeps the text, drops the URLs) to save tokens. Default false."
    }
  },
  "additionalProperties": false
}
scrape_markdown annotations
{
  "title": "Web page to Markdown",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
scrape_batch — Read several web pages at once
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use it when an agent needs to read several web pages at once: compare competitors' pricing pages, read the top search results, or the pages a site_map call found. Reads 2-5 public URLs in one paid call (one payment round trip instead of five), each exactly like scrape_markdown: the main content as clean Markdown (or `mode: "full"`), real tables, code blocks, metadata from meta tags and JSON-LD (author, dates, language, canonical URL), PDFs as text by page, RSS feeds as item lists, optionally each page's links. Results come back in request order, each either `ok: true` with the page or `ok: false` with an error code and message (bot check, unreachable, unsupported content), so one bad URL does not spoil the batch. Each page is cut at `max_chars_per_page` (default 20,000); next_calls continue a long page with scrape_markdown. If no page at all can be read, the call fails and is not charged. JavaScript is not executed. No account or API key. Costs $0.008 USDC per call via x402 ($0.002 per page when read one by one). Paid per call with x402 inside MCP (see the server instructions).

scrape_batch input schema
{
  "type": "object",
  "required": [
    "urls"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "mode": {
      "enum": [
        "main",
        "full"
      ],
      "type": "string",
      "default": "main",
      "description": "main (default): each page's article or main content only. full: whole pages, including navigation and footers."
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri",
        "maxLength": 2048
      },
      "maxItems": 5,
      "minItems": 2,
      "description": "2-5 different public http(s) URLs to read, e.g. [\"https://example.com/pricing\", \"https://example.com/docs\"]. Results come back in the same order."
    },
    "include_links": {
      "type": "boolean",
      "default": false,
      "description": "Also return each page's links as a list (url, text, internal). Default false."
    },
    "strip_link_urls": {
      "type": "boolean",
      "default": false,
      "description": "Write links as plain text in the Markdown (keeps the text, drops the URLs) to save tokens. Default false."
    },
    "max_chars_per_page": {
      "type": "integer",
      "default": 20000,
      "maximum": 50000,
      "minimum": 1000,
      "description": "Return at most this many characters of each page (1,000-50,000, default 20,000). Read the rest of a long page with scrape_markdown and its next_offset."
    }
  },
  "additionalProperties": false
}
scrape_batch annotations
{
  "title": "Read several web pages at once",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
site_map — Website page list (site map)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use it when an agent needs to know what pages a website has before reading them: where is the pricing page, which docs pages exist, what did the blog publish lately, which product or careers pages are there. Give any URL on the site; returns the site's page URLs with their last-modified dates, like Firecrawl's /map. Reads the sitemaps named in robots.txt, else /sitemap.xml and /sitemap_index.xml, following sitemap indexes (up to 10 child sitemaps, 20,000 URLs) and gzip (.xml.gz) sitemaps; a site with no sitemap is mapped from its home page's links on the same host. Filter with `search` (every word must appear in the URL, title or date, e.g. "pricing" or "blog 2026") and `path_prefix` (e.g. "/docs/"); `limit` up to 1,000 (default 200). next_calls read the first matches with scrape_batch. When the site cannot be reached (502) or no page matches (404), you are not charged. No account or API key. Costs $0.002 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

site_map input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "The website, or any page on it, e.g. https://example.com. Its origin (scheme and host) is mapped."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "limit": {
      "type": "integer",
      "default": 200,
      "maximum": 1000,
      "minimum": 1,
      "description": "How many URLs to return (1-1,000, default 200)."
    },
    "search": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Only URLs containing every word of this text (case-insensitive) in the URL, or in the title or lastmod when known, e.g. \"pricing\" or \"blog 2026\"."
    },
    "path_prefix": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1,
      "description": "Only URLs whose path starts with this, e.g. \"/blog/\" or \"/docs\"."
    }
  },
  "additionalProperties": false
}
site_map annotations
{
  "title": "Website page list (site map)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
domain_enrich — Domain email and web profile
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Who hosts this company's email, and is it configured properly?" and "Which SaaS tools does this company use?". Profiles a domain from live DNS and its website: MX records and the inferred email provider (Google Workspace, Microsoft 365, …), SPF and DMARC configuration and policy, services the domain has verified ownership with (from TXT records: Google, Microsoft, Stripe, Atlassian, …), whether the website is reachable over HTTPS, and stack and security headers (Server, X-Powered-By, HSTS, CSP). Use it for lead enrichment, email deliverability checks, vendor due diligence or security reviews. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.004 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

domain_enrich input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "domain": {
      "type": "string",
      "maxLength": 300,
      "description": "Domain to profile, e.g. example.com. A full URL is accepted; its hostname is used."
    }
  },
  "additionalProperties": false
}
domain_enrich annotations
{
  "title": "Domain email and web profile",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
email_verify — Email address verification
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Is this email address valid?", "Will mail to it bounce?" and "Is it a throwaway, a shared inbox or a typo?" before an agent sends mail or saves a lead. Checks, without sending mail: syntax, whether the domain accepts email (MX records, an A/AAAA record as implicit MX, or a null MX that refuses all mail), disposable/temporary providers (a maintained list of thousands of domains), free webmail (Gmail, Outlook, Yahoo, ...), role accounts (info@, support@, noreply@), likely misspellings of big providers with a corrected suggestion (gmial.com → gmail.com), and the domain's SPF and DMARC records and email provider. Returns a verdict (deliverable, risky, undeliverable), a 0-100 score and the reasons. The mailbox itself is not probed (no SMTP), so a catch-all domain accepts any name. An invalid address is still an answer (undeliverable); only a DNS failure is an error, not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.001 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

email_verify input schema
{
  "type": "object",
  "required": [
    "email"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "email": {
      "type": "string",
      "maxLength": 320,
      "minLength": 3,
      "description": "The address to check, e.g. \"jane@acme.com\" (a \"Jane Doe <jane@acme.com>\" form is accepted)."
    }
  },
  "additionalProperties": false
}
email_verify annotations
{
  "title": "Email address verification",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sanctions_screen — OFAC sanctions screening
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Is this company or person sanctioned by the US?" and "Is this crypto wallet on OFAC's list?" for KYC, vendor onboarding, payments and compliance checks. Screens a name against the US Treasury OFAC Specially Designated Nationals (SDN) list and the Consolidated (non-SDN) sanctions lists, primary names and aliases, tolerant of word order ("PUTIN, Vladimir"), accents, punctuation, honorifics, legal suffixes and small typos; and a cryptocurrency address against the addresses OFAC lists (exact match). Each match has a 0-100 score, the name it matched (primary or a.k.a.), and the listing: OFAC ID, type, programs, title, aliases, addresses, date of birth, nationality, crypto addresses and remarks. Filter by type and country; set the score threshold. `clear` is true when nothing matched. Lists are refreshed from OFAC every 12 hours. A screening aid, not legal advice. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sanctions_screen input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Person, company, vessel or aircraft name, e.g. \"Vladimir Putin\" or \"Rosneft\"."
    },
    "type": {
      "enum": [
        "individual",
        "entity",
        "vessel",
        "aircraft"
      ],
      "type": "string",
      "description": "Only this kind of listing: individual, entity, vessel or aircraft."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Most matches to return, best first (default 10)."
    },
    "country": {
      "type": "string",
      "maxLength": 60,
      "minLength": 2,
      "description": "Only listings with an address or nationality in this country, e.g. \"Iran\"."
    },
    "min_score": {
      "type": "integer",
      "default": 85,
      "maximum": 100,
      "minimum": 50,
      "description": "Lowest name-match score (0-100) to report. Default 85."
    },
    "crypto_address": {
      "type": "string",
      "maxLength": 120,
      "minLength": 20,
      "description": "A cryptocurrency address to check against the addresses OFAC lists (exact match), e.g. a Bitcoin or Ethereum address."
    }
  },
  "additionalProperties": false
}
sanctions_screen annotations
{
  "title": "OFAC sanctions screening",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
counterparty_check — Counterparty check (KYB / vendor / payee vetting)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Is it safe to pay this vendor?", "Can I onboard this customer?" or "Who is behind this payTo address?". Give a company or person `name`, their `domain` (website or email address) and/or the `wallet` you would pay. One call runs, side by side: an OFAC sanctions screen of the name and wallet (SDN and Consolidated lists, fuzzy name matching), the company profile (public or private: industry, HQ, founded, employees, tickers), the domain's age, email setup (MX, DMARC) and website, and an on-chain wallet risk check on Base or Ethereum (sanctioned controllers, account type, activity, balance). Returns `verdict` (block / review / clear), a one-line `summary`, every reason with the check it came from, and the facts behind them. A check that cannot reach its source is reported as failed instead of failing the call. Replaces sanctions_screen, company_profile, domain_enrich and wallet_risk_check (four calls) for vendor onboarding, KYB, payee vetting before an x402 or USDC payment, and fraud screening. A screening aid, not legal advice. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.02 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

counterparty_check input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "The company or person, e.g. \"Acme Robotics Inc.\" Screened against OFAC and looked up as a company."
    },
    "chain": {
      "enum": [
        "base",
        "ethereum"
      ],
      "type": "string",
      "default": "base",
      "description": "Chain of `wallet`: \"base\" (default) or \"ethereum\"."
    },
    "domain": {
      "type": "string",
      "maxLength": 300,
      "minLength": 3,
      "description": "Their website or email domain, e.g. \"acme.com\" (a URL or an email address is accepted)."
    },
    "wallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The EVM address you would pay or receive from, e.g. an x402 payTo."
    }
  },
  "additionalProperties": false
}
counterparty_check annotations
{
  "title": "Counterparty check (KYB / vendor / payee vetting)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
token_verdict — Token verdict: is this token safe? (graded A-F)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Is this token a scam?", "Is it safe to ape into this?", "Rug pull risk?" or "Should my agent accept this token as payment?" in one short answer. Send a token contract address on Base (default) or Ethereum. The service reads the contract and its DEX liquidity on-chain (owner powers such as minting, blacklisting, pausing, fees and trading switches; upgradeability; renounced ownership; Uniswap and Aerodrome liquidity; OFAC sanctions) and returns a grade: A (solid), B (no flags, modest liquidity), C (read the cautions), D (serious risks) or F (avoid: no liquidity, sanctioned or high-risk), a one-liner under 70 characters, a two-sentence take, the red flags and good signs, liquidity in USD and a 0-100 risk score, plus a sell test: a simulated buy from the biggest pool and sell back into it (nothing is sent on-chain) that catches honeypots and hidden buy/sell taxes. For every detail, token_risk_check returns the full evidence. Not financial advice. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.009 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

token_verdict input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "chain": {
      "enum": [
        "base",
        "ethereum"
      ],
      "type": "string",
      "default": "base",
      "description": "\"base\" (default) or \"ethereum\"."
    },
    "address": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The token contract, e.g. 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC on Base)."
    }
  },
  "additionalProperties": false
}
token_verdict annotations
{
  "title": "Token verdict: is this token safe? (graded A-F)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_fund_holdings — 13F fund holdings (what a hedge fund or investor owns)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What does Warren Buffett own?", "What did Michael Burry buy last quarter?", "Did Bridgewater sell Nvidia?" or "What are Cathie Wood's biggest positions?". Give a fund or investor name (Berkshire Hathaway, Bridgewater, Renaissance, Pershing Square/Ackman, Scion/Burry, ARK/Cathie Wood, Citadel, Soros, Tiger Global, Appaloosa/Tepper, Icahn, Baupost, Third Point, Duquesne/Druckenmiller, Vanguard, Two Sigma, Elliott, Viking, D. E. Shaw and any other 13F filer) or its SEC CIK. Returns the latest (or any `period`) 13F-HR: total value, number of positions, each position (issuer, CUSIP, value, shares, % of portfolio, options marked put/call) merged across sub-managers, and against the quarter before: new positions, positions sold out, the biggest adds and cuts, and a plain-English `summary`. Managers with over $100M in US equities file within 45 days of each quarter's end. Unknown funds are not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.01 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_fund_holdings input schema
{
  "type": "object",
  "properties": {
    "cik": {
      "type": "string",
      "pattern": "^\\d{1,10}$",
      "description": "The manager's SEC CIK, e.g. 1067983 (Berkshire Hathaway)."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "fund": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "The investment manager or investor, e.g. \"Berkshire Hathaway\", \"Bridgewater\", \"Cathie Wood\" or \"Michael Burry\". Use this or `cik`."
    },
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 200,
      "minimum": 1,
      "description": "How many positions to list, largest first (1-200, default 25). Totals and changes always cover the whole portfolio."
    },
    "period": {
      "type": "string",
      "pattern": "^(?:latest|\\d{4}-\\d{2}-\\d{2}|\\d{4}-?Q[1-4])$",
      "description": "Which quarter: \"latest\" (default), a quarter-end date such as 2026-06-30, or 2026-Q2."
    }
  },
  "additionalProperties": false
}
sec_fund_holdings annotations
{
  "title": "13F fund holdings (what a hedge fund or investor owns)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sec_ipo_filings — New IPO and SPAC filings
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Who filed for an IPO this week?", "Which IPOs priced today?" or "Any new SPACs?". Lists IPO registrations from EDGAR's live feed (about the last week), newest first, each with its stage: filed (first S-1, F-1 or S-11), amended (S-1/A, on the way to pricing), upsized (S-1MEF, registered just before pricing) or priced (424B4 final prospectus), the filing link, and whether it looks like a SPAC. Resale and follow-on registrations by companies that already trade are left out unless `include_public_companies` is true. Filter by stage or SPACs; poll with `since` (the previous `cursor`) to get only new filings. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_ipo_filings input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1,
      "description": "Most filings to return, newest first (default 25)."
    },
    "since": {
      "type": "string",
      "description": "Only filings EDGAR accepted after this time: pass the previous answer's `cursor` to get just the new ones."
    },
    "spacs": {
      "enum": [
        "include",
        "exclude",
        "only"
      ],
      "type": "string",
      "default": "include",
      "description": "SPACs (blank-check \"Acquisition Corp\" shells): include (default), exclude or only."
    },
    "stages": {
      "type": "array",
      "items": {
        "enum": [
          "filed",
          "amended",
          "upsized",
          "priced"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Only these stages: filed (first S-1/F-1/S-11), amended (…/A), upsized (…MEF, just before pricing), priced (424B4 final prospectus). Default: all."
    },
    "include_public_companies": {
      "type": "boolean",
      "default": false,
      "description": "Also list registrations by companies that already trade (resale and follow-on offerings). Default false: IPOs only."
    }
  },
  "additionalProperties": false
}
sec_ipo_filings annotations
{
  "title": "New IPO and SPAC filings",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
daily_briefing — Daily market briefing: SEC red flags, earnings, IPOs, macro
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What happened in the markets I should know about?", "Give me a morning briefing" or "Anything bad filed about my holdings overnight?". One call combines: SEC alerts filed in the last 24 hours, most serious first (restatements, auditor changes, delisting notices, late filings, cyber incidents, insider purchases of $100K+); earnings releases from the latest day with any, with headline figures; IPO registrations and pricings this week (SPACs left out); and US Treasury yields, CPI, unemployment, payrolls and Fed funds. Give `tickers` to narrow alerts and earnings to a watchlist, or `include` to pick sections. Starts with a few plain-sentence `summary` lines. For one every morning on your webhook, use daily_briefing_subscription. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.025 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

daily_briefing input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "include": {
      "type": "array",
      "items": {
        "enum": [
          "alerts",
          "earnings",
          "ipos",
          "economy"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Sections to include: alerts (SEC red flags and insider buys), earnings, ipos, economy. Default: all four."
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$"
      },
      "maxItems": 100,
      "minItems": 1,
      "description": "A watchlist: SEC alerts and earnings only for these tickers. Default: the whole market."
    }
  },
  "additionalProperties": false
}
daily_briefing annotations
{
  "title": "Daily market briefing: SEC red flags, earnings, IPOs, macro",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
economic_indicators — US economic indicators
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What is the 10-year Treasury yield?", "Is the yield curve inverted?", "What is inflation now?", "What is the unemployment rate?" and "Where is the fed funds rate?". Returns a snapshot of key US macro indicators from official public-domain sources: the U.S. Treasury's daily par yield curve (1 month to 30 years, 10y-2y spread, inversion), the Bureau of Labor Statistics' CPI and core CPI (year-over-year %), unemployment rate and nonfarm payrolls (level and monthly change), and the New York Fed's effective federal funds rate and target range. Optionally up to 24 months of monthly history. Choose indicators to keep the answer short. Sources are cached (yields and fed funds 1 hour, BLS 12 hours); a source that does not answer is listed in `unavailable`. If none answers, you are not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.003 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

economic_indicators input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "indicators": {
      "type": "array",
      "items": {
        "enum": [
          "treasury_yields",
          "inflation",
          "employment",
          "fed_funds"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Which to return: treasury_yields, inflation, employment, fed_funds. Default: all four."
    },
    "history_months": {
      "type": "integer",
      "default": 0,
      "maximum": 24,
      "minimum": 0,
      "description": "Also return this many months of monthly history (inflation, employment, month-end 10-year and 2-year yields). Default 0."
    }
  },
  "additionalProperties": false
}
economic_indicators annotations
{
  "title": "US economic indicators",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
hvac_psychrometrics — Psychrometric air properties (HVAC)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Answers "What is the dew point / enthalpy / humidity ratio of 95 °F air at 75 °F wet bulb?" and "What RH is 75 °F air with a 55 °F dew point in Denver?" for HVAC design, commissioning, energy and comfort work. From any two of dry bulb, wet bulb, dew point, relative humidity, humidity ratio, enthalpy or grains, returns the full state point: all seven plus specific volume, density and vapor pressure, at any site elevation (atmospheric pressure), in IP (°F, BTU/lb, gr/lb) or SI (°C, kJ/kg, g/kg). Uses the ASHRAE Handbook—Fundamentals (2021) Ch. 1 equations (Hyland-Wexler saturation pressure, ice below freezing) and is cross-checked against PsychroLib to within 0.02 °F. Every result includes `steps`: each equation with the numbers put into it and its ASHRAE reference, so the work can be checked or pasted into a calc package. Impossible states (wet bulb above dry bulb, RH over 100%) are errors and are not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.002 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

hvac_psychrometrics input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "units": {
      "enum": [
        "IP",
        "SI"
      ],
      "type": "string",
      "default": "IP",
      "description": "\"IP\" (°F, CFM, in, BTU) or \"SI\" (°C, L/s, mm, kW). Default IP. Applies to inputs and results."
    },
    "grains": {
      "type": "number",
      "minimum": 0,
      "description": "Moisture in grains per lb dry air (gr/lb), in either unit system (7,000 gr = 1 lb)."
    },
    "dry_bulb": {
      "type": "number",
      "description": "Dry-bulb temperature, °F (IP) or °C (SI)."
    },
    "enthalpy": {
      "type": "number",
      "description": "Enthalpy: BTU per lb dry air (IP) or kJ/kg dry air (SI)."
    },
    "wet_bulb": {
      "type": "number",
      "description": "Wet-bulb temperature, °F or °C."
    },
    "dew_point": {
      "type": "number",
      "description": "Dew-point temperature, °F or °C."
    },
    "elevation": {
      "type": "number",
      "default": 0,
      "maximum": 30000,
      "minimum": -1500,
      "description": "Site elevation, ft (IP) or m (SI); sets the atmospheric pressure. Default 0 (sea level)."
    },
    "humidity_ratio": {
      "type": "number",
      "minimum": 0,
      "description": "Humidity ratio: lb water per lb dry air (IP, e.g. 0.0100) or g/kg (SI, e.g. 10.0)."
    },
    "relative_humidity": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Relative humidity, % (0-100)."
    }
  },
  "additionalProperties": false
}
hvac_psychrometrics annotations
{
  "title": "Psychrometric air properties (HVAC)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
hvac_coil_load — HVAC coil load and air mixing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Answers "What is the cooling coil load for 10,000 CFM from 80/67 °F to 55/54 °F?", "What leaves a coil that removes 270 MBH sensible and 60 MBH latent?" and "What is the mixed air with 20% outdoor air?" for AHU and RTU selection, coil schedules and design checks. Give the airflow and either the entering and leaving air (any two properties each) to get the sensible, latent and total loads, tons, sensible heat ratio, condensate rate and both full state points; or one state plus the loads to solve the other (cooling or heating). The entering air can be mixed from outdoor and return air states with an outdoor air % or airflow; or, given the mixed air, the outdoor air % is back-calculated. Standard-air equations (Qs = 1.08·CFM·ΔT, Ql = 4840·CFM·ΔW, Qt = 4.5·CFM·Δh as a cross-check), ASHRAE psychrometrics at the site elevation, IP (CFM, MBH) or SI (L/s, kW). Flags impossible (supersaturated) results. Every result includes `steps` with the equations and numbers. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.002 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

hvac_coil_load input schema
{
  "type": "object",
  "required": [
    "airflow"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "mode": {
      "enum": [
        "cooling",
        "heating"
      ],
      "type": "string",
      "description": "When solving a state from loads: cooling (default) removes heat, heating adds it. Detected automatically when both states are given."
    },
    "units": {
      "enum": [
        "IP",
        "SI"
      ],
      "type": "string",
      "default": "IP",
      "description": "\"IP\" (°F, CFM, in, BTU) or \"SI\" (°C, L/s, mm, kW). Default IP. Applies to inputs and results."
    },
    "airflow": {
      "type": "number",
      "description": "Total airflow through the coil: CFM (IP) or L/s (SI).",
      "exclusiveMinimum": 0
    },
    "leaving": {
      "type": "object",
      "properties": {
        "grains": {
          "type": "number",
          "minimum": 0
        },
        "dry_bulb": {
          "type": "number"
        },
        "enthalpy": {
          "type": "number"
        },
        "wet_bulb": {
          "type": "number"
        },
        "dew_point": {
          "type": "number"
        },
        "humidity_ratio": {
          "type": "number",
          "minimum": 0
        },
        "relative_humidity": {
          "type": "number",
          "maximum": 100,
          "minimum": 0
        }
      },
      "description": "Air leaving the coil: two properties, like `entering`.",
      "additionalProperties": false
    },
    "entering": {
      "type": "object",
      "properties": {
        "grains": {
          "type": "number",
          "minimum": 0
        },
        "dry_bulb": {
          "type": "number"
        },
        "enthalpy": {
          "type": "number"
        },
        "wet_bulb": {
          "type": "number"
        },
        "dew_point": {
          "type": "number"
        },
        "humidity_ratio": {
          "type": "number",
          "minimum": 0
        },
        "relative_humidity": {
          "type": "number",
          "maximum": 100,
          "minimum": 0
        }
      },
      "description": "Air entering the coil: exactly two of dry_bulb, wet_bulb, dew_point, relative_humidity (%), humidity_ratio (lb/lb or g/kg), enthalpy (BTU/lb or kJ/kg), grains (gr/lb), in `units`. With outdoor_air and return_air but no outdoor air amount, it is the mixed air and the outdoor air % is back-calculated.",
      "additionalProperties": false
    },
    "elevation": {
      "type": "number",
      "default": 0,
      "maximum": 30000,
      "minimum": -1500,
      "description": "Site elevation, ft (IP) or m (SI); sets the atmospheric pressure. Default 0 (sea level)."
    },
    "return_air": {
      "type": "object",
      "properties": {
        "grains": {
          "type": "number",
          "minimum": 0
        },
        "dry_bulb": {
          "type": "number"
        },
        "enthalpy": {
          "type": "number"
        },
        "wet_bulb": {
          "type": "number"
        },
        "dew_point": {
          "type": "number"
        },
        "humidity_ratio": {
          "type": "number",
          "minimum": 0
        },
        "relative_humidity": {
          "type": "number",
          "maximum": 100,
          "minimum": 0
        }
      },
      "description": "Return air (two properties, like `entering`).",
      "additionalProperties": false
    },
    "latent_load": {
      "type": "number",
      "minimum": 0,
      "description": "Coil latent load, MBH or kW (default 0 when only sensible_load is given)."
    },
    "outdoor_air": {
      "type": "object",
      "properties": {
        "grains": {
          "type": "number",
          "minimum": 0
        },
        "dry_bulb": {
          "type": "number"
        },
        "enthalpy": {
          "type": "number"
        },
        "wet_bulb": {
          "type": "number"
        },
        "dew_point": {
          "type": "number"
        },
        "humidity_ratio": {
          "type": "number",
          "minimum": 0
        },
        "relative_humidity": {
          "type": "number",
          "maximum": 100,
          "minimum": 0
        }
      },
      "description": "Outdoor air (two properties, like `entering`), mixed with return_air ahead of the coil.",
      "additionalProperties": false
    },
    "sensible_load": {
      "type": "number",
      "minimum": 0,
      "description": "Coil sensible load, MBH (IP) or kW (SI): with one state, solves the other."
    },
    "outdoor_airflow": {
      "type": "number",
      "minimum": 0,
      "description": "Outdoor airflow, CFM or L/s (instead of outdoor_air_percent)."
    },
    "outdoor_air_percent": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Outdoor air share of the total airflow, %."
    }
  },
  "additionalProperties": false
}
hvac_coil_load annotations
{
  "title": "HVAC coil load and air mixing",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
hvac_duct_size — HVAC duct sizing and friction loss
Advertised by the server during the last successful anonymous check.
Advertised read-only

Answers "What size duct for 1,000 CFM at 0.08 in. w.g./100 ft?", "What is the velocity and friction in a 24×12 duct at 2,000 CFM?" and "What height do I need with a 10 in depth limit?" for duct design and checking. Give any two of a duct size (round diameter, or rectangular width × height), airflow, velocity and friction rate (equal-friction sizing); a single width or height is held as a fixed side. Returns the exact round diameter and a rectangular equivalent (ASHRAE/Huebscher equivalent diameter for equal friction, or equal area for a velocity design), the nearest standard round and rectangular sizes with the velocity and friction of each, the friction loss per 100 ft (Darcy-Weisbach with Colebrook-White, galvanized steel, standard air), velocity pressure, Reynolds number, and design checks for velocity, friction and aspect ratio. IP (in, CFM, FPM) or SI (mm, L/s, m/s, Pa/m, metric sizes). Every result includes `steps` with the equations and numbers. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.002 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

hvac_duct_size input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "units": {
      "enum": [
        "IP",
        "SI"
      ],
      "type": "string",
      "default": "IP",
      "description": "\"IP\" (°F, CFM, in, BTU) or \"SI\" (°C, L/s, mm, kW). Default IP. Applies to inputs and results."
    },
    "width": {
      "type": "number",
      "description": "Rectangular width: in or mm. With height, the duct size; alone, a fixed side (e.g. a ceiling depth) the other side is solved for.",
      "exclusiveMinimum": 0
    },
    "height": {
      "type": "number",
      "description": "Rectangular height: in or mm.",
      "exclusiveMinimum": 0
    },
    "airflow": {
      "type": "number",
      "description": "Airflow: CFM (IP) or L/s (SI).",
      "exclusiveMinimum": 0
    },
    "diameter": {
      "type": "number",
      "description": "Round duct diameter: in (IP) or mm (SI).",
      "exclusiveMinimum": 0
    },
    "velocity": {
      "type": "number",
      "description": "Air velocity: FPM (IP) or m/s (SI).",
      "exclusiveMinimum": 0
    },
    "friction_rate": {
      "type": "number",
      "description": "Friction loss: in. w.g. per 100 ft (IP, typically 0.05-0.15) or Pa/m (SI, typically 0.4-1.2). With airflow, this is equal-friction sizing.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
hvac_duct_size annotations
{
  "title": "HVAC duct sizing and friction loss",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
wallet_risk_check — Wallet risk check (OFAC + on-chain)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Is it safe to send money to this address?" before an agent pays an x402 payTo, a vendor, a user or another agent, and "Who is behind this address?". Checks, on Base or Ethereum: whether the address is on the US Treasury OFAC SDN or Consolidated lists, and whether anything controlling it is (the owner of a contract, the owners of a Safe multisig, an EIP-7702 delegate, a proxy implementation); what it is (a person's wallet, smart wallet, Safe multisig, token contract, proxy or other contract); how many transactions it has sent; its ETH and USDC balances; and flags a never-used wallet or a token contract (sending funds to one usually loses them). Returns a verdict (high_risk, caution, no_flags), a 0-100 risk score and the reasons, with an explorer link. Read live from the chain; OFAC lists refreshed every 12 hours. A screening aid, not legal advice. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

wallet_risk_check input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "chain": {
      "enum": [
        "base",
        "ethereum"
      ],
      "type": "string",
      "default": "base",
      "description": "\"base\" (default) or \"ethereum\"."
    },
    "address": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The wallet or contract to check, e.g. the payTo of an x402 payment request."
    }
  },
  "additionalProperties": false
}
wallet_risk_check annotations
{
  "title": "Wallet risk check (OFAC + on-chain)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
token_risk_check — Token risk check (scam and rug signals)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Is this token a scam?", "Can I sell it?" and "Can the owner mint, freeze or tax it?" before an agent buys, accepts or lists an ERC-20 token on Base or Ethereum. Reads the contract and its proxy implementation: name, symbol, supply; owner and whether ownership is renounced; upgradeability (EIP-1967 proxies, admin); the powers its code grants a privileged account, found from its function signatures: mint new tokens, blacklist or freeze holders, change buy/sell fees, pause transfers, set max transaction or wallet limits, or keep trading switched off; and DEX liquidity: every Uniswap v2, Uniswap v3 and Aerodrome (Base) pool against WETH and USDC with reserves and an estimated USD value. The token, its owner and proxy admin are screened against OFAC. Returns a verdict (high_risk, caution, no_flags), a risk score and the reasons. Heuristics, not a sell simulation or audit. A wallet address (no code) is an error and not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.005 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

token_risk_check input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "chain": {
      "enum": [
        "base",
        "ethereum"
      ],
      "type": "string",
      "default": "base",
      "description": "\"base\" (default) or \"ethereum\"."
    },
    "address": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The token contract, e.g. 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC on Base)."
    }
  },
  "additionalProperties": false
}
token_risk_check annotations
{
  "title": "Token risk check (scam and rug signals)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
new_token_launches — New token launches on Base, with risk verdicts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What tokens launched on Base in the last hour, and which look safe?" for trading and research agents. Finds every pool created against WETH, ETH or USDC on Uniswap v2, v3 and v4 and Aerodrome in the window (default the last 60 minutes, up to 6 hours), groups them by token, newest first, and runs each of the newest (up to 20) through token_risk_check: name and symbol, whether the contract itself is brand new, owner and renounced ownership, powers in its code (mint, blacklist, fees, pause, trading switch, limits), upgradeability, measured liquidity in USD, OFAC screening, and a verdict (high_risk, caution, no_flags) with reasons. Filter by minimum liquidity or hide high-risk tokens. Built for polling: each answer gives `latest_block`; pass it as `since_block` next time to get only newer launches. Read live from the chain. Not financial advice. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.01 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

new_token_launches input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1,
      "description": "How many tokens to check, newest first (1-20, default 10). All new pools are counted either way."
    },
    "minutes": {
      "type": "integer",
      "default": 60,
      "maximum": 360,
      "minimum": 1,
      "description": "How far back to look, in minutes (1-360, default 60). Ignored when since_block is given."
    },
    "since_block": {
      "type": "integer",
      "maximum": 9007199254740991,
      "description": "Only pools created after this Base block: pass the previous answer's latest_block when polling (at most 6 hours back).",
      "exclusiveMinimum": 0
    },
    "hide_high_risk": {
      "type": "boolean",
      "default": false,
      "description": "Leave out tokens judged high_risk. Default false."
    },
    "min_liquidity_usd": {
      "type": "number",
      "default": 0,
      "minimum": 0,
      "description": "Leave out tokens with less measured liquidity than this (USD). Default 0."
    }
  },
  "additionalProperties": false
}
new_token_launches annotations
{
  "title": "New token launches on Base, with risk verdicts",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
x402_preflight — x402 preflight: is it safe to pay this endpoint?
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "Is it safe to pay this x402 endpoint?" before an agent pays a seller it has not used before. Requests the URL without paying (GET, then POST), reads the 402 challenge (x402 v1 or v2) and checks every payment option: scheme, network, amount, asset, payTo and timeout, testnet vs mainnet, and the price in USD for USDC; whether it declares a valid Bazaar listing; how fast it answers. Screens the payTo wallet against OFAC and, on Base or Ethereum, checks what it is (a wallet, multisig, or a token contract that would swallow the payment). Adds how much the endpoint and its seller are actually used: 30-day calls and unique paying wallets from the Coinbase Bazaar's published figures. Set max_price_usd to enforce a budget. Returns ok_to_pay, caution or do_not_pay with reasons. An unreachable endpoint is an answer (do_not_pay). You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.003 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

x402_preflight input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The paid endpoint, e.g. https://api.example.com/v1/tool."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "method": {
      "enum": [
        "auto",
        "GET",
        "POST"
      ],
      "type": "string",
      "default": "auto",
      "description": "How to request it: auto (default) tries GET, then POST with an empty JSON body."
    },
    "max_price_usd": {
      "type": "number",
      "description": "Your budget per call: a higher price makes the verdict do_not_pay.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
x402_preflight annotations
{
  "title": "x402 preflight: is it safe to pay this endpoint?",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
sec_alert_subscription — SEC alerts pushed to your webhook (30 days)
Advertised by the server during the last successful anonymous check.
Open-world

Answers "Tell me the moment any of my holdings files something bad" without polling. One payment covers 30 days: every new alert matching your filters (a `tickers` watchlist, `levels`, `types`; default red, amber and green: restatements, delisting notices, bankruptcies, late 10-K/10-Q, auditor changes, cybersecurity incidents, impairments, changes in control, insider purchases of $100K+) is POSTed to your HTTPS `webhook_url` as JSON within about 2 minutes of being found, in the same shape sec_market_alerts returns, signed with HMAC-SHA256 using the `signing_secret` returned once at signup. Failed deliveries are retried every 2 minutes. The webhook must answer a test ping with 2xx or you are not charged. Extend with `renew_subscription_id` (+30 days); check deliveries or cancel with the free sec_alert_subscription_status. Subscriptions survive server restarts. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $1.00 USDC per 30 days via x402. Paid per call with x402 inside MCP (see the server instructions).

sec_alert_subscription input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "types": {
      "type": "array",
      "items": {
        "enum": [
          "bankruptcy",
          "restatement",
          "delisting_notice",
          "late_annual_report",
          "auditor_change",
          "cybersecurity_incident",
          "impairment",
          "debt_acceleration",
          "change_in_control",
          "late_quarterly_report",
          "insider_purchase",
          "leadership_change",
          "earnings",
          "material_agreement",
          "acquisition_or_disposal",
          "restructuring",
          "unregistered_share_sale"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Only these alert types: bankruptcy, restatement, delisting_notice, late_annual_report, auditor_change, cybersecurity_incident, impairment, debt_acceleration, change_in_control, late_quarterly_report, insider_purchase, leadership_change, earnings, material_agreement, acquisition_or_disposal, restructuring, unregistered_share_sale."
    },
    "levels": {
      "type": "array",
      "items": {
        "enum": [
          "red",
          "amber",
          "green",
          "info"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Only these levels (red, amber, green, info). Default: red, amber and green."
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$"
      },
      "maxItems": 200,
      "minItems": 1,
      "description": "Watchlist: only alerts for these tickers. Default: the whole market."
    },
    "webhook_url": {
      "type": "string",
      "format": "uri",
      "description": "Your HTTPS endpoint. New alerts are POSTed to it as JSON, signed (see `verify`). It must answer a test ping with 2xx, or you are not charged."
    },
    "renew_subscription_id": {
      "type": "string",
      "pattern": "^sub_[a-f0-9]{24}$",
      "description": "Extend this subscription by 30 days instead of creating one (its webhook and filters stay)."
    }
  },
  "additionalProperties": false
}
sec_alert_subscription annotations
{
  "title": "SEC alerts pushed to your webhook (30 days)",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
daily_briefing_subscription — Daily market briefing pushed to your webhook (30 days)
Advertised by the server during the last successful anonymous check.
Open-world

Answers "Send me a market briefing every morning" without scheduling anything. One payment covers 30 days: each day at `delivery_hour_utc` (default 11, i.e. 7am New York, before the US open) the same briefing daily_briefing returns is POSTed to your HTTPS `webhook_url` as JSON ({type: "briefing", briefing: {...}}), signed with HMAC-SHA256 using the `signing_secret` returned once at signup. The first briefing arrives within minutes of subscribing. Narrow it with a `tickers` watchlist or `include` sections. Failed deliveries are retried. The webhook must answer a test ping with 2xx or you are not charged. Extend with `renew_subscription_id` (+30 days); check deliveries or cancel with the free sec_alert_subscription_status. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $3.00 USDC per 30 days via x402 (30 briefings for the price of 120 one-off calls). Paid per call with x402 inside MCP (see the server instructions).

daily_briefing_subscription input schema
{
  "type": "object",
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "include": {
      "type": "array",
      "items": {
        "enum": [
          "alerts",
          "earnings",
          "ipos",
          "economy"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Sections to include: alerts (SEC red flags and insider buys), earnings, ipos, economy. Default: all four."
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z][A-Z0-9.\\-]{0,9}$"
      },
      "maxItems": 100,
      "minItems": 1,
      "description": "A watchlist: SEC alerts and earnings only for these tickers. Default: the whole market."
    },
    "webhook_url": {
      "type": "string",
      "format": "uri",
      "description": "Your HTTPS endpoint. Each morning's briefing is POSTed to it as JSON, signed (see `verify`). It must answer a test ping with 2xx, or you are not charged."
    },
    "delivery_hour_utc": {
      "type": "integer",
      "default": 11,
      "maximum": 23,
      "minimum": 0,
      "description": "The hour (UTC) the briefing is sent each day. Default 11 (7am New York, before the US market opens). The first one is sent within minutes of subscribing."
    },
    "renew_subscription_id": {
      "type": "string",
      "pattern": "^sub_[a-f0-9]{24}$",
      "description": "Extend this briefing subscription by 30 days instead of creating one (its webhook and settings stay)."
    }
  },
  "additionalProperties": false
}
daily_briefing_subscription annotations
{
  "title": "Daily market briefing pushed to your webhook (30 days)",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
crypto_tax_ledger — Crypto tax ledger for a wallet (CPA-ready)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers "What crypto transactions did this wallet make in 2026?", "Give my accountant my crypto activity" or "Which of my transfers are taxable?". Give a wallet address on Base (default) or Ethereum and a tax year (or `from`/`to` dates). Returns every token, coin and NFT transfer in the period from the wallet's full on-chain history, each labeled with its kind (received, sent, swap, self-transfer, NFT in/out) and how a CPA usually treats it (income, disposal, trade, not taxable), the amount in or out, the counterparty, the transaction link and the USD value for dollar stablecoins; totals received, sent and net per asset; counts; and, with `include_csv`, the same rows as CSV for a spreadsheet or tax software. Swaps are flagged as taxable disposals. A record for preparing taxes, not tax advice; gains need cost basis and prices. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.02 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

crypto_tax_ledger input schema
{
  "type": "object",
  "required": [
    "wallet"
  ],
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End date (inclusive, UTC), instead of `year`."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date (inclusive, UTC), instead of `year`."
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2015,
      "description": "Tax year (calendar, UTC). Default: the current year. Use `from`/`to` for another period."
    },
    "chain": {
      "enum": [
        "base",
        "ethereum"
      ],
      "type": "string",
      "default": "base",
      "description": "\"base\" (default) or \"ethereum\"."
    },
    "wallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The wallet to report on, e.g. 0x6847231bD28E16A0A57c59793f6B8BD8CC0043aC."
    },
    "include_csv": {
      "type": "boolean",
      "default": false,
      "description": "Also return the rows as CSV text, ready for a spreadsheet or a CPA."
    }
  },
  "additionalProperties": false
}
crypto_tax_ledger annotations
{
  "title": "Crypto tax ledger for a wallet (CPA-ready)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
web_search — Web search
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers any question that needs the live web: "latest news on X", "who makes Y", "documentation for Z". Returns ranked results (title, URL, snippet, date), a direct answer or knowledge-panel summary when the search engine shows one, and related searches. Filter by country, language and recency (past day, week, month, year). To read the pages too, use web_search_read (search plus the top pages as clean Markdown in one call) or scrape_markdown on a result. No results is an error and not charged. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.006 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

web_search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "num": {
      "type": "integer",
      "default": 8,
      "maximum": 10,
      "minimum": 1,
      "description": "How many results (1-10, default 8)."
    },
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "query": {
      "type": "string",
      "maxLength": 400,
      "minLength": 1,
      "description": "What to search for, e.g. \"best open-source vector database 2026\" or \"site:sec.gov Apple 10-K\"."
    },
    "country": {
      "type": "string",
      "pattern": "^[a-z]{2}$",
      "description": "Two-letter country for local results, e.g. us, gb, de. Default: us."
    },
    "language": {
      "type": "string",
      "pattern": "^[a-z]{2}$",
      "description": "Two-letter language code, e.g. en, de, fr."
    },
    "time_range": {
      "enum": [
        "day",
        "week",
        "month",
        "year"
      ],
      "type": "string",
      "description": "Only results from the past day, week, month or year (news, recent events)."
    }
  },
  "additionalProperties": false
}
web_search annotations
{
  "title": "Web search",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
web_search_read — Web search and read the top pages
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Answers a research question in one call: searches the web, then reads the top results (up to 3) as clean Markdown with the same reader as scrape_markdown (main content, tables kept, PDFs supported), so an agent gets the sources' text instead of just links. A page that cannot be read (bot check, error) is skipped and the next result read instead, and listed in `skipped`. Also returns all results, a direct answer when there is one and related searches. Country, language and recency filters; characters per page are adjustable. You are only charged when a result is returned: invalid input (400) and upstream failures (4xx/5xx) are not settled. Costs $0.012 USDC per call via x402. Paid per call with x402 inside MCP (see the server instructions).

web_search_read input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "via": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional: the tool whose next_calls suggested this call (filled in for you)."
    },
    "read": {
      "type": "integer",
      "default": 3,
      "maximum": 3,
      "minimum": 1,
      "description": "How many of the top results to read as Markdown (1-3, default 3). Pages that cannot be read are skipped for the next result."
    },
    "query": {
      "type": "string",
      "maxLength": 400,
      "minLength": 1,
      "description": "What to search for, e.g. \"best open-source vector database 2026\" or \"site:sec.gov Apple 10-K\"."
    },
    "country": {
      "type": "string",
      "pattern": "^[a-z]{2}$",
      "description": "Two-letter country for local results, e.g. us, gb, de. Default: us."
    },
    "language": {
      "type": "string",
      "pattern": "^[a-z]{2}$",
      "description": "Two-letter language code, e.g. en, de, fr."
    },
    "time_range": {
      "enum": [
        "day",
        "week",
        "month",
        "year"
      ],
      "type": "string",
      "description": "Only results from the past day, week, month or year (news, recent events)."
    },
    "max_chars_per_page": {
      "type": "integer",
      "default": 8000,
      "maximum": 20000,
      "minimum": 500,
      "description": "Markdown characters per page (500-20000, default 8,000)."
    }
  },
  "additionalProperties": false
}
web_search_read annotations
{
  "title": "Web search and read the top pages",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
344 ms
95th percentile latency
344 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 344 ms · metadata changed · 41 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http agent-utility-suite-mcp https://x402-agent-api.onrender.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add agent-utility-suite-mcp --url https://x402-agent-api.onrender.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable agent-utility-suite-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "agent-utility-suite-mcp": {
      "url": "https://x402-agent-api.onrender.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "agent-utility-suite-mcp": {
      "type": "streamableHttp",
      "url": "https://x402-agent-api.onrender.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start agent-utility-suite-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "agent-utility-suite-mcp": {
      "type": "http",
      "url": "https://x402-agent-api.onrender.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http agent-utility-suite-mcp https://x402-agent-api.onrender.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://x402-agent-api.onrender.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "agent-utility-suite-mcp": {
      "serverUrl": "https://x402-agent-api.onrender.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Agent Utility Suite MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.