Pack catalog
The 32 first-party B3OS packs with their actions, triggers, connections and hosts, generated from the pack index the build publishes.
Every first-party pack, generated from the pack index that packages/packs builds. Each one uses a credential you bring or a keyless public API; none uses a key B3OS pays for. Call an action as <pack>/<action>@<version> with POST /v1/actions/call, or let an agent find it with actions_search. GET /v1/actions/packs lists the packs your node serves.
A pack version is served once it is published to the registry and signed with the B3OS release key, which a person holds outside every automated system; nodes check each version's content hash and signature before they load it (signing). Connections are vault connections you create for the pack and key shown.
Airtable
io.b3os/airtable 1.0.0 · databases, productivity
Read and write Airtable bases with your own personal access token: list bases and their table schemas, list and filter records with formulas and views, get one record, and create, update or delete up to 10 records per call. The token needs data.records:read and write, and schema.bases:read for the schema actions, on the bases you grant it.
| Connection key | Type | What to store |
|---|---|---|
token | bearer | A personal access token (pat...) from airtable.com/create/tokens with the scopes and bases the actions need, or an OAuth access token of your own Airtable integration. |
Hosts it reaches: api.airtable.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
list-bases | read | airtable__list-bases | The bases the token can access, with id, name and permission level. Page with offset. |
get-base-schema | read | airtable__get-base-schema | Every table of a base with its id, name, primary field and fields (id, name, type such as singleLineText, number, singleSelect, multipleRecordLinks). Read it to learn field names before writing records. |
list-records | read | airtable__list-records | Records of a table, optionally through a view and filtered with an Airtable formula such as AND({Status} = 'Open', {Due} < TODAY()), sorted by one field, limited to some fields. Up to 100 per page; pass the returned offset to continue. |
get-record | read | airtable__get-record | One record by id with all its non-empty fields. |
create-records | write | airtable__create-records | Create 1 to 10 records in a table from field values keyed by field name. Returns the new records with their ids. Not idempotent. |
update-records | write | airtable__update-records | Update 1 to 10 records by id: only the fields given change (PATCH semantics), others keep their values. Returns the updated records. |
delete-records | irreversible | airtable__delete-records | Delete 1 to 10 records by id. Deleted records go to the base's trash for 7 days (Pro plan and above); the API cannot restore them. |
arXiv
io.b3os/arxiv 1.0.0 · research, science, search
Search arXiv preprints in physics, mathematics, computer science, quantitative biology, finance, statistics and economics, and fetch papers by id, through the official arXiv API. Keyless and read-only. Results are Atom XML (the API's only format). arXiv asks clients to make at most one request every 3 seconds. Thank you to arXiv for use of its open access interoperability.
No credential: a keyless public API.
Hosts it reaches: export.arxiv.org.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search | read | arxiv__search | Search arXiv with its query syntax: field prefixes ti: (title), au: (author), abs: (abstract), cat: (category such as cs.AI), all:, combined with AND, OR and ANDNOT, phrases in double quotes. Sort by relevance, submission date or last update; page with start. Returns the Atom feed (XML) with title, authors, abstract, dates, categories and PDF link per paper. |
get-papers | read | arxiv__get-papers | Fetch up to 50 papers by arXiv id (2106.15928, or with a version, 2106.15928v2; old-style ids like hep-th/9901001 work too). Returns the Atom feed (XML) with one entry per id: title, authors, abstract, dates, categories, DOI and journal reference when present, and the PDF link. |
Chainalysis sanctions screening
io.b3os/chainalysis-sanctions 1.0.0 · compliance, crypto, security
Screen a blockchain address against the sanctions lists Chainalysis tracks (OFAC SDN and others) with your own free Chainalysis sanctions API key. Chain-agnostic: EVM, Bitcoin, Solana and other address formats. Returns whether the address is listed, the categories and every listing with its source URL. A clean result means no listing at the time of the call, not a compliance determination.
| Connection key | Type | What to store |
|---|---|---|
chainalysis | api_key | Your key for the Chainalysis sanctions screening API (free registration), sent as the X-API-Key header to public.chainalysis.com only. |
Hosts it reaches: public.chainalysis.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
check-address | read | chainalysis-sanctions__check-address | Check whether a blockchain address is on any sanctions list tracked by Chainalysis (OFAC SDN, EU, UN, etc.). Returns a boolean sanctioned flag, unique categories, and the full identifications list with source URLs. Chain-agnostic (EVM, BTC, Solana). Ideal for: compliance workflows, pre-transaction screening, counterparty risk checks, AML monitoring, audit trails. |
CoinGecko
io.b3os/coingecko 1.0.0 · crypto, market-data, prices
Crypto market data from CoinGecko with your own CoinGecko Demo API key (free from coingecko.com): prices by coin ID or token contract, market rankings with caps, volumes and supply, price history, search across coins, exchanges, categories and NFTs, trending searches, global market totals and exchange rankings. Pro keys use another host and header and are not supported yet.
| Connection key | Type | What to store |
|---|---|---|
coingecko | api_key | A CoinGecko Demo API key from your CoinGecko developer dashboard, sent as the x-cg-demo-api-key header to api.coingecko.com only. |
Hosts it reaches: api.coingecko.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-token-price | read | coingecko__get-token-price | Current price of coins by CoinGecko ID (bitcoin, ethereum, ...) in one or more currencies, optionally with market cap, 24-hour volume, 24-hour change and the last update time. One entry per requested coin; found is false for unknown IDs. |
get-token-price-by-contract | read | coingecko__get-token-price-by-contract | Current price of tokens by contract address on one platform (ethereum, base, arbitrum-one, polygon-pos, solana, ...) in one or more currencies, optionally with market cap, 24-hour volume and change. EVM addresses must be lowercase. found is false for tokens CoinGecko does not track. |
get-coin-markets | read | coingecko__get-coin-markets | Get market data for cryptocurrencies with prices, market cap, volume, and supply metrics. Returns current price, 24h high/low/volume, price change percentages (24h, 7d, 14d, 30d, 1y), ATH/ATL, circulating/total/max supply, and optional 7-day sparkline. Sorted by market cap by default. Supports pagination (100/page, max 250), filtering by category (DeFi, Layer 1, Meme), and filtering by coin IDs. Ideal for: market overview dashboards, leaderboards, coin comparisons, category analysis, screeners. |
get-market-chart | read | coingecko__get-market-chart | Get historical price, market cap, and volume data for a cryptocurrency as time series. Returns [timestamp, value] pairs from oldest to newest. Granularity: 5-min (1d), hourly (2-90d), daily (90d+). Set interval='daily' to force daily data. Range: 1 day to 'max'. Ideal for: price charts, trend analysis, return calculations, backtesting strategies. |
search | read | coingecko__search | Search for cryptocurrencies, exchanges, categories, and NFTs by name or symbol. Returns ranked results with images and identifiers. Supports partial/fuzzy matching. Results ranked by market cap. Ideal for: finding CoinGecko coin IDs, token discovery, building search UIs, identifier lookups. |
get-trending | read | coingecko__get-trending | Get trending cryptocurrencies, NFT collections, and categories based on CoinGecko search popularity. Returns top 15 coins, 7 NFTs, and 6 categories ranked by trending score. Includes images, market cap rank, BTC price, and scores. Ideal for: discovering hot tokens, trending lists, market sentiment tracking, social signals. |
get-global-market | read | coingecko__get-global-market | Get global cryptocurrency market statistics and overview data. Returns total market cap, 24h volume, BTC/ETH dominance %, active coin count, and market counts in multiple currencies. Ideal for: market dashboards, dominance tracking, sentiment analysis, macro indicators. |
get-exchanges | read | coingecko__get-exchanges | Retrieves a list of all cryptocurrency exchanges ranked by trust score (highest first). Returns exchange details, trust score, and 24h volume with pagination (default 100, max 250 per page). Ideal for: discovering exchanges, building exchange directories, comparing exchange trustworthiness. |
get-global-defi | read | coingecko__get-global-defi | DeFi market totals over CoinGecko's top 100 DeFi coins: DeFi market cap, Ethereum market cap, the DeFi-to-ETH ratio, 24-hour trading volume, DeFi dominance of the whole crypto market, and the top DeFi coin with its share. All values except topCoinDefiDominance are decimal strings, as CoinGecko returns them. |
get-derivatives-exchanges | read | coingecko__get-derivatives-exchanges | Derivatives exchanges with market data, ranked by open interest by default (or by name or 24-hour volume): open interest and 24-hour volume in BTC, perpetual and futures pair counts, logo, year established, country, description and website. tradeVolume24hBtc is a decimal string. Page with perPage and page; get-derivatives-exchanges-list gives every ID and name in one call. |
get-coin-tickers | read | coingecko__get-coin-tickers | Trading pairs of one coin across exchanges (centralized and DEX): base and target symbols, exchange, last price, 24-hour volume, prices and volumes converted to BTC, ETH and USD, bid-ask spread, trust score, stale and anomaly flags, and trade URL. 100 tickers per page, sorted by trust score unless order says otherwise; exchangeIds narrows to some exchanges and depth adds the cost to move the price 2%. |
get-exchange-tickers | read | coingecko__get-exchange-tickers | Trading pairs listed on one exchange: base and target symbols, last price, 24-hour volume, prices and volumes converted to BTC, ETH and USD, bid-ask spread, trust score, stale and anomaly flags, and trade URL. 100 tickers per page; order base_target keeps paging stable; coinIds keeps only pairs involving those coins; depth adds the cost to move the price 2%. |
get-exchange-volume-chart | read | coingecko__get-exchange-volume-chart | Trading volume history of one exchange in BTC (spot or derivatives exchange IDs, such as binance or binance_futures): one point per 10 minutes for 1 day, hourly for 7 and 14 days, daily for 30 days and more. timestamp is Unix milliseconds. get-exchanges and get-derivatives-exchanges-list give the IDs. |
get-derivatives-exchanges-list | read | coingecko__get-derivatives-exchanges-list | ID and name of every derivatives exchange CoinGecko tracks (219 on 2026-10-26), with no market data: use it to find the ID for get-derivatives-exchanges or another derivatives call. |
DEX Screener
io.b3os/dexscreener 1.0.0 · crypto, market-data, defi
Decentralized-exchange market data from DEX Screener across many chains: pairs for a token (price in USD and native, liquidity, volume, buys and sells, price change, FDV, market cap), pairs by pool address, pair search, newly listed token profiles and the most boosted tokens. Keyless public API, read-only.
No credential: a keyless public API.
Hosts it reaches: api.dexscreener.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-token-pairs | read | dexscreener__get-token-pairs | Every DEX pair (pool) that trades the given tokens on one chain, with price in USD and in the quote token, liquidity, 5-minute to 24-hour volume, buy and sell counts, price change, FDV, market cap and pair creation time. Up to 30 token addresses per call; use it for a token's live price and where it trades. |
get-pairs-by-address | read | dexscreener__get-pairs-by-address | DEX pairs by their pool (pair) contract addresses on one chain: base and quote token, price, liquidity, volume, transactions, price change and FDV. Use it when you already know the pool, for example from get-token-pairs. |
search-pairs | read | dexscreener__search-pairs | Search DEX Screener pairs by token name, symbol or address (for example PEPE, SOL/USDC or a contract address), across all chains, best match first, with price, liquidity, volume and price change. Returns up to 30 pairs. |
get-boosted-tokens | read | dexscreener__get-boosted-tokens | Tokens with the most active DEX Screener boosts (paid promotion), highest total first, with chain, address, description, icon, links and boost amounts. Boosts are advertising, not a quality signal. Optionally only one chain. |
get-latest-profiles | read | dexscreener__get-latest-profiles | The newest token profiles published on DEX Screener (projects that added a description, icon and links), newest first, optionally only on one chain. A profile is self-published by the project. |
Discord
io.b3os/discord 1.0.0 · messaging, community
Post, read, edit, react to and delete messages, start threads, and list a server's channels with your own Discord bot's token (API v10). The bot must be in the server with permission for each channel (View Channel, Send Messages, Read Message History, Add Reactions, Manage Messages to delete others' messages). Reading message content needs the Message Content intent enabled for the bot.
| Connection key | Type | What to store |
|---|---|---|
bot | api_key | The token of your own bot from the Discord Developer Portal (Applications, Bot, Reset Token). It is sent as Authorization: Bot <token>. |
Hosts it reaches: discord.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-bot-user | read | discord__get-bot-user | The bot's own user: id, username and display name. A cheap way to check the token. |
send-message | write | discord__send-message | Post a message (up to 2,000 characters of Discord Markdown) in a text channel or thread, optionally as a reply. Mentions in the text do not ping anyone unless allow_mentions is true. Returns the message id. Not idempotent. |
get-messages | read | discord__get-messages | Recent messages in a channel, newest first (up to 100), or those before or after a message id for paging. Content is empty unless the bot has the Message Content intent. |
edit-message | write | discord__edit-message | Replace the text of a message the bot posted. |
delete-message | irreversible | discord__delete-message | Delete a message. The bot can delete its own messages; others' need Manage Messages. Cannot be undone. |
add-reaction | write | discord__add-reaction | React to a message with a Unicode emoji (for example a check mark) or a custom server emoji written name:id. |
create-thread | write | discord__create-thread | Start a public thread from an existing message, with a name and an auto-archive time (1 hour to 1 week of inactivity). Returns the thread id, which send-message accepts as a channel. |
list-guild-channels | read | discord__list-guild-channels | The channels of a server (guild): id, name, type (0 text, 2 voice, 4 category, 5 announcement, 15 forum), parent category and position. Threads are not included. |
Finnhub
io.b3os/finnhub 1.0.0 · finance, stocks, market-data
Stock market data from Finnhub with your own Finnhub API key: real-time quotes, basic financial metrics (valuation, margins, growth, 52-week range, beta), company and market news, earnings calendar, analyst recommendation trends, thematic portfolios and symbol search. Some endpoints, such as thematic portfolios, need a paid Finnhub plan.
| Connection key | Type | What to store |
|---|---|---|
finnhub | api_key | Your Finnhub API key from finnhub.io/dashboard. Sent as the X-Finnhub-Token header to finnhub.io only. |
Hosts it reaches: finnhub.io.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-quote | read | finnhub__get-quote | Fetch the real-time quote for a stock symbol from Finnhub. Returns current price, daily change, percent change, day high/low, open, and previous close. Ideal for: stock price alerts, portfolio monitoring, price-based workflow conditions. |
get-basic-financials | read | finnhub__get-basic-financials | Fetch basic financial metrics for a stock symbol from Finnhub (100+ metrics: valuation, margins, growth, liquidity, 52-week range). Returns a metric map keyed by name, e.g. peTTM, beta, 52WeekHigh, currentRatio, grossMarginTTM. Ideal for: fundamental screening, valuation alerts, enriching AI analysis with company fundamentals. |
get-company-news | read | finnhub__get-company-news | Fetch news articles about a stock symbol from Finnhub published between two dates (YYYY-MM-DD), with headline, summary, source, URL, image and publication time. Finnhub covers North American companies; its free tier has one year of history. |
get-earnings-calendar | read | finnhub__get-earnings-calendar | Fetch scheduled and reported company earnings from Finnhub between two dates (YYYY-MM-DD), optionally for one symbol: date, before or after market hours, fiscal year and quarter, EPS and revenue estimates and actuals. |
get-investment-theme | read | finnhub__get-investment-theme | Fetch the constituent stock symbols of a thematic investing portfolio from Finnhub (e.g. ai, robotics, cybersecurity, fintech). Returns the list of symbols and a count; unknown themes return an empty list. Ideal for: building thematic watchlists, screening stocks by sector trend, feeding symbols into downstream quote or sentiment checks. |
get-market-news | read | finnhub__get-market-news | Fetch the latest market news from Finnhub for a category: general, forex, crypto, or merger. Returns headline, summary, source, URL, and publication timestamp per article, capped by limit (default 20, max 100). Ideal for: daily market briefings, crypto news alerts, feeding headlines into AI summarization. |
get-recommendation-trends | read | finnhub__get-recommendation-trends | Fetch monthly analyst recommendation trends for a stock symbol from Finnhub. Returns strong-buy/buy/hold/sell/strong-sell counts per month, most recent first. Ideal for: tracking analyst consensus shifts, rating-change alerts, combining with price data for trade signals. |
symbol-search | read | finnhub__symbol-search | Search Finnhub for securities (stocks, ETFs, crypto) by company name or ticker. Returns matching symbols with their display symbol, description, and type, best match first (default 10, max 50). Ideal for: resolving a company name to a ticker before fetching quotes/news/financials, ticker autocomplete. |
Frankfurter exchange rates
io.b3os/frankfurter 1.0.0 · finance, currency, open-data
Foreign exchange reference rates published by the European Central Bank, through the free Frankfurter API (no key): latest and historical rates for the currencies the ECB publishes, time series between two dates, conversions and the currency list. Rates are published on working days only; weekends and holidays return the previous working day.
No credential: a keyless public API.
Hosts it reaches: api.frankfurter.dev.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
latest-rates | read | frankfurter__latest-rates | The most recent ECB reference rates from a base currency to all others (or the symbols you list), multiplied by amount. |
historical-rates | read | frankfurter__historical-rates | ECB reference rates on a past date (the last working day on or before it), from a base currency to all others or the symbols you list. |
time-series | read | frankfurter__time-series | Daily ECB reference rates between two dates (end defaults to the latest), keyed by date, for the symbols you list. List few symbols over long ranges: every working day is one entry. |
convert | read | frankfurter__convert | Convert an amount from one currency to another at the latest ECB reference rate (or on a past date), returning the converted amount and the rate. |
list-currencies | read | frankfurter__list-currencies | Every currency Frankfurter has ECB rates for, as ISO 4217 code to English name. |
GitHub
io.b3os/github 1.0.0 · developer-tools, issue-tracking, source-control
Work with GitHub repositories using your own token: read repositories, files, commits, releases and Actions runs; search, read, open, comment on, label and close issues; list and inspect pull requests; react to repository events through a webhook B3OS creates and removes for you, or poll for new issues. Uses the REST API version 2022-11-28 at api.github.com (not GitHub Enterprise Server). A fine-grained personal access token or GitHub App token with Contents, Issues, Pull requests and Actions read access covers the read actions; the write actions need Issues write, and the webhook trigger needs Webhooks write (admin:repo_hook for classic tokens).
| Connection key | Type | What to store |
|---|---|---|
token | bearer | A fine-grained personal access token, a classic token, or a GitHub App installation token. Grant only the repositories and permissions the actions you use need. |
Hosts it reaches: api.github.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-repo | read | github__get-repo | One repository's metadata: description, visibility, default branch, primary language, topics, license, stars, forks, open issue and pull request count, archived flag and last push time. |
list-issues | read | github__list-issues | Issues in a repository with filters for state, labels, assignee and update time, newest first by default. GitHub counts pull requests as issues; is_pull_request tells them apart. One page per call; increase page to continue. |
get-issue | read | github__get-issue | One issue (or pull request) by number with its full Markdown body, labels, assignees, comment count and timestamps. Comments themselves are in list-issue-comments. |
search-issues | read | github__search-issues | Search issues and pull requests across GitHub with GitHub's search syntax, for example repo:acme/widgets is:open label:bug or is:pr author:mona review:required. Returns matches with total count; at most 1,000 results are reachable through paging. |
create-issue | write | github__create-issue | Open a new issue with a title, optional Markdown body, labels and assignees. Returns its number and URL. Not idempotent: calling it twice opens two issues. |
add-issue-comment | write | github__add-issue-comment | Add a Markdown comment to an issue or pull request (the conversation tab, not a code review comment). Returns the comment id and URL. Not idempotent. |
list-issue-comments | read | github__list-issue-comments | Comments on an issue or pull request conversation, oldest first: author, Markdown body and times. Page through long threads with page. |
close-issue | write | github__close-issue | Close an issue as completed or as not planned. Closing an already closed issue succeeds and changes nothing. |
add-labels | write | github__add-labels | Add labels to an issue or pull request, keeping its existing ones. Labels that do not exist yet in the repository are created. Returns the full label list after the change. |
list-pull-requests | read | github__list-pull-requests | Pull requests in a repository by state, base branch or head (user:branch), sorted by creation, update or popularity. Returns title, author, branches, head commit, draft flag, labels and requested reviewers. |
get-pull-request | read | github__get-pull-request | One pull request with its description and merge state: merged, mergeable and mergeable_state (clean, blocked, dirty, ...), commit count, additions, deletions and changed files. mergeable can be null while GitHub is still computing it; ask again a moment later. |
get-file-contents | read | github__get-file-contents | The raw text of one file at a branch, tag or commit (default branch when ref is omitted), for example README.md or .github/workflows/ci.yml. Directories, symlinks and submodules come back as GitHub's JSON description instead. Very large files can exceed the runtime's response size limit. |
list-commits | read | github__list-commits | Commits on a branch or under a path, newest first, optionally by author or within a time window: SHA, first line and full message, author, date and URL. |
get-latest-release | read | github__get-latest-release | The latest published release (not a draft or prerelease): tag, name, Markdown notes, publish time and downloadable assets with sizes and download counts. not_found when the repository has no releases. |
list-workflow-runs | read | github__list-workflow-runs | Recent GitHub Actions workflow runs, newest first, filtered by branch, triggering event or status (queued, in_progress, completed, success, failure, ...): workflow name, title, status, conclusion, branch, commit and timing. |
create-webhook | write | github__create-webhook | Create a repository webhook that POSTs the chosen events (issues, pull_request, push, ...) as JSON to a URL, signed with a secret (X-Hub-Signature-256). The repo-event trigger calls this for you; use it directly only for webhooks B3OS does not manage. Needs admin:repo_hook (classic) or Webhooks write (fine-grained). |
delete-webhook | irreversible | github__delete-webhook | Delete a repository webhook by id (from create-webhook). The repo-event trigger calls this when its subscription is deleted. |
| Trigger | Kind | Ref |
|---|---|---|
| Repository event | webhook | io.b3os/github/repo-event@1.0.0 |
| New issue | poll | io.b3os/github/new-issue@1.0.0 |
Gmail
io.b3os/gmail 1.0.0 · email, productivity
Search and read mail, send plain-text messages, create drafts and change labels (read, starred, archived) in a Gmail mailbox with your own Google OAuth token. Reading gives headers, labels and a snippet; full bodies arrive base64-encoded from Gmail, which declarative actions cannot decode, so they are not included. Needs gmail.readonly, gmail.send, gmail.compose or gmail.modify depending on the actions you use.
| Connection key | Type | What to store |
|---|---|---|
google | oauth2 | An OAuth access token for your Google account from your own Google Cloud OAuth client, with the scopes listed here. Store the refresh_token, client_id and client_secret with it so the vault can refresh the token (access tokens last an hour); B3OS never uses a Google client of its own. Scopes: https://www.googleapis.com/auth/gmail.readonly, https://www.googleapis.com/auth/gmail.send, https://www.googleapis.com/auth/gmail.compose, https://www.googleapis.com/auth/gmail.modify. |
Hosts it reaches: gmail.googleapis.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
list-messages | read | gmail__list-messages | Message and thread ids matching a Gmail search (the same syntax as the search box: from:alice is:unread newer_than:7d has:attachment label:work), newest first. Read each with get-message. Page with page_token. |
get-message | read | gmail__get-message | One message's From, To, Cc, Subject, Date and Message-ID headers, labels, a text snippet, size and receive time. The body is not included (see the pack description). |
send-email | write | gmail__send-email | Send a plain-text email from the connected mailbox to one or more recipients, with optional Cc and Bcc. Returns the sent message id and thread id. Not idempotent: two calls send two emails. |
create-draft | write | gmail__create-draft | Save a plain-text email as a draft in the connected mailbox for a person to review and send. Returns the draft id and message id. Not idempotent. |
modify-labels | write | gmail__modify-labels | Add and remove labels on a message: remove UNREAD to mark it read, remove INBOX to archive it, add STARRED to star it, or add a user label. Returns the labels after the change. |
list-labels | read | gmail__list-labels | The mailbox's labels: system labels (INBOX, SENT, UNREAD, STARRED, ...) and user labels with their ids, which search and modify-labels use. |
Google Calendar
io.b3os/google-calendar 1.0.0 · calendar, scheduling, productivity
Read and schedule with Google Calendar using your own Google OAuth token: list calendars, list and search events in a time window, read one event, find free and busy time across calendars, create events with attendees, and delete events. Needs calendar.readonly for reading and calendar.events to create or delete.
| Connection key | Type | What to store |
|---|---|---|
google | oauth2 | An OAuth access token for your Google account from your own Google Cloud OAuth client, with the scopes listed here. Store the refresh_token, client_id and client_secret with it so the vault can refresh the token (access tokens last an hour); B3OS never uses a Google client of its own. Scopes: https://www.googleapis.com/auth/calendar.readonly, https://www.googleapis.com/auth/calendar.events. |
Hosts it reaches: www.googleapis.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
list-calendars | read | google-calendar__list-calendars | Calendars in the user's list with id, name, time zone, access role (owner, writer, reader, freeBusyReader) and whether it is the primary one. |
list-events | read | google-calendar__list-events | Events in a time window, recurring events expanded into single occurrences and sorted by start time, optionally matching free text. Returns summary, time, location, Meet link, organizer and attendee responses. Page with page_token. |
get-event | read | google-calendar__get-event | One event by id with its time, description, location, Meet link, organizer and attendees. |
find-free-busy | read | google-calendar__find-free-busy | Busy intervals of up to 50 calendars (or people's primary calendars, by email) in a window, to find a time everyone is free. Calendars you cannot see come back with an error instead of intervals. |
create-event | write | google-calendar__create-event | Create an event with a summary, start and end times (or all-day dates), optional description, location and attendees, optionally with a Google Meet link. send_updates controls invitation emails. Not idempotent. |
delete-event | irreversible | google-calendar__delete-event | Delete an event (for a recurring series, the whole series unless the id is one occurrence). Attendees are emailed only if send_updates says so. |
Google Drive
io.b3os/google-drive 1.0.0 · files, documents, productivity
Find and read files in Google Drive with your own Google OAuth token: search with Drive's query language, get file metadata, export Google Docs, Sheets and Slides as plain text, Markdown or CSV, download text files, and create folders. Includes shared drives. Needs drive.readonly (or drive.file for files the app created, drive for create-folder).
| Connection key | Type | What to store |
|---|---|---|
google | oauth2 | An OAuth access token for your Google account from your own Google Cloud OAuth client, with the scopes listed here. Store the refresh_token, client_id and client_secret with it so the vault can refresh the token (access tokens last an hour); B3OS never uses a Google client of its own. Scopes: https://www.googleapis.com/auth/drive.readonly, https://www.googleapis.com/auth/drive.file. |
Hosts it reaches: www.googleapis.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search-files | read | google-drive__search-files | Files and folders matching a Drive query, for example name contains 'roadmap' and mimeType = 'application/vnd.google-apps.document' and trashed = false, or 'FOLDER_ID' in parents. Sorted by last modified by default. Page with page_token. |
get-file | read | google-drive__get-file | One file's name, type, size, owner, parents, timestamps and web link. |
export-document | read | google-drive__export-document | The contents of a Google Doc as plain text or Markdown, of a Sheet's first tab as CSV, or of Slides as plain text. Exports are limited to 10 MB by Google. For other text files use download-text. |
download-text | read | google-drive__download-text | The contents of a regular file stored in Drive (txt, csv, md, json, ...) as text. Binary files come back garbled; Google Docs need export-document. Very large files can exceed the runtime's response size limit. |
create-folder | write | google-drive__create-folder | Create a folder, optionally inside another folder (parent_id). Returns its id and link. Not idempotent: Drive allows several folders with the same name. |
Google Sheets
io.b3os/google-sheets 1.0.0 · spreadsheets, productivity
Read and write Google Sheets with your own Google OAuth token: spreadsheet metadata and tabs, values of one or several ranges, appending rows, updating and clearing ranges, and creating spreadsheets. Uses the Sheets API v4. Needs the spreadsheets scope (or spreadsheets.readonly for the read actions) from your own OAuth client.
| Connection key | Type | What to store |
|---|---|---|
google | oauth2 | An OAuth access token for your Google account from your own Google Cloud OAuth client, with the scopes listed here. Store the refresh_token, client_id and client_secret with it so the vault can refresh the token (access tokens last an hour); B3OS never uses a Google client of its own. Scopes: https://www.googleapis.com/auth/spreadsheets. |
Hosts it reaches: sheets.googleapis.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-spreadsheet | read | google-sheets__get-spreadsheet | A spreadsheet's title, locale, time zone, URL and tabs (sheet id, title, index, row and column count). Use the tab titles in ranges. |
get-values | read | google-sheets__get-values | Cell values of one range as rows (or columns with major_dimension COLUMNS). Formatted values by default (as shown in the UI); UNFORMATTED_VALUE gives raw numbers and FORMULA the formulas. Trailing empty rows and cells are left out. |
batch-get-values | read | google-sheets__batch-get-values | Cell values of up to 50 ranges in one call, in the order given, each with its resolved range and rows. |
append-rows | write | google-sheets__append-rows | Append rows after the last row of data in a range's table (for example Sheet1!A:D), inserting new rows so nothing is overwritten. Returns the range written. Not idempotent: calling it twice appends twice. |
update-values | write | google-sheets__update-values | Overwrite the cells of a range with the given rows, starting at its top-left cell. Cells outside the given rows keep their values. |
clear-values | write | google-sheets__clear-values | Clear the values (not the formatting) of a range. |
create-spreadsheet | write | google-sheets__create-spreadsheet | Create an empty spreadsheet with a title (and optionally named first tab) in the user's Drive. Returns its id and URL. Not idempotent. |
Hacker News
io.b3os/hacker-news 1.0.0 · news, developer-tools, social
Read Hacker News: the current front page, full-text search over stories and comments (newest first or by relevance), single items with their comment ids, and user profiles. Uses the public Algolia HN Search API and the official Firebase API. Keyless and read-only; no connection needed.
No credential: a keyless public API.
Hosts it reaches: hn.algolia.com, hacker-news.firebaseio.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-front-page | read | hacker-news__get-front-page | The stories on the Hacker News front page right now, in Algolia's front-page order, with points, comment counts, links and discussion URLs. Use search-recent for what is new and search for a topic. |
search | read | hacker-news__search | Full-text search over Hacker News ranked by relevance, then points and comment count. Filter by item type, minimum points and creation time; page through with page. Returns stories (or comments, when type is comment) with links and discussion URLs. |
search-recent | read | hacker-news__search-recent | The same search as search, sorted by creation time with the newest first. Use it to watch a topic or to list what was just posted (empty query with type story is the /newest page). |
get-item | read | hacker-news__get-item | One story, comment, job or poll by id from the official API: title, link, text, author, score, time, and the ids of its direct replies (kids, in ranked order). Call it again with a kid id to walk a thread. |
get-user | read | hacker-news__get-user | A Hacker News user's public profile: karma, account creation time, the about text (HTML) and how many items they submitted. Ids are case-sensitive. |
| Trigger | Kind | Ref |
|---|---|---|
| New story | poll | io.b3os/hacker-news/new-story@1.0.0 |
HTTP
io.b3os/http 1.0.0 · http, developer-tools, webhooks
Plain HTTP requests to public URLs: GET and HEAD, and POST, PUT, PATCH or DELETE with a JSON, form or text body. For public APIs without a pack and for URLs that carry their own authorization, such as webhook URLs and presigned links. No credentials are ever attached; private and loopback addresses are refused. Prefer a provider pack when one exists: it has typed inputs and outputs.
No credential: a keyless public API.
Hosts it reaches: *.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get | read | http__get | Fetch a URL with GET and return the status, content type, Location and ETag headers, and the body (parsed JSON when the response is JSON, otherwise text). Non-2xx statuses fail with an error code unless fail_on_error_status is false. |
head | read | http__head | Check a URL without downloading it: status, content type, content length, ETag, Last-Modified and Location (for redirects). |
post-json | irreversible | http__post-json | POST a JSON body to a URL (a webhook, an API endpoint without a pack) and return the status and the response body. Not idempotent: retrying may repeat the effect. |
post-form | irreversible | http__post-form | POST form fields (application/x-www-form-urlencoded) to a URL and return the status and the response body. Not idempotent. |
post-text | irreversible | http__post-text | POST a text body (plain text, CSV, XML, NDJSON, ...) with the content type you give and return the status and the response body. Not idempotent. |
put-json | irreversible | http__put-json | PUT a JSON body to a URL (replace a resource) and return the status and the response body. |
patch-json | irreversible | http__patch-json | PATCH a URL with a JSON body (partial update) and return the status and the response body. |
delete | irreversible | http__delete | Send DELETE to a URL and return the status and the response body. Deleting cannot be undone. |
Hyperliquid (read-only)
io.b3os/hyperliquid 1.0.0 · crypto, market-data, derivatives
Read-only data from the Hyperliquid perpetuals exchange through its public info API: markets and their parameters, mid prices, order books, candles, funding rates (with Binance and Bybit for comparison) and funding history, and any account's positions, margin, open orders, fills and transfers. Keyless; no trading, no signing. Hyperliquid rate-limits by IP and the node shares one IP, so poll gently.
No credential: a keyless public API.
Hosts it reaches: api.hyperliquid.xyz.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-markets | read | hyperliquid__get-markets | Every perpetual market on Hyperliquid (or on a HIP-3 DEX) with its coin symbol, size decimals, maximum leverage and whether only isolated margin is allowed. Use the coin names with the other actions. |
get-mids | read | hyperliquid__get-mids | Current mid price of every Hyperliquid market as a map from coin to price string (BTC, ETH, ...; spot pairs appear as @index and outcome sides as #index). One cheap call when you need many prices. |
get-order-book | read | hyperliquid__get-order-book | Level-2 order book of one market: up to 20 bid and ask levels with price, size and order count, best levels first. Optionally aggregate prices to 2 to 5 significant figures for a coarser view. |
get-candles | read | hyperliquid__get-candles | OHLCV candles for one market between two times, at 1m, 5m, 15m, 1h, 4h, 1d or 1w: open, high, low and close prices, volume in coins and trade count. Hyperliquid serves at most the 5,000 most recent candles of an interval. |
get-funding-rates | read | hyperliquid__get-funding-rates | Predicted next funding rate of every Hyperliquid perp (or one coin), with Binance and Bybit predictions for the same coin when they list it. Rates are per funding interval (Hyperliquid pays hourly); annualizedRate is the Hyperliquid rate times the intervals in a year. |
get-funding-history | read | hyperliquid__get-funding-history | Hourly funding payments of one Hyperliquid perp since a start time: rate per hour and premium at each payment. Hyperliquid returns at most 500 points per call; page by passing the last time plus one as start_time. |
get-account | read | hyperliquid__get-account | An account's perpetuals state: account value, margin used, total position notional, withdrawable balance, and every open position with size (negative for shorts), entry price, value, unrealized PnL, return on equity, leverage, liquidation price and funding since open. Open orders are in get-open-orders. |
get-open-orders | read | hyperliquid__get-open-orders | An account's resting orders: coin, side, limit price, remaining and original size, order id and placement time. |
get-fills | read | hyperliquid__get-fills | An account's trade fills, newest first: coin, side, price, size, direction (Open Long, Close Short, ...), closed PnL, fee and transaction hash. Without start_time you get the most recent fills (Hyperliquid caps this at 2,000); with start_time, the fills in that window. |
get-transfer-history | read | hyperliquid__get-transfer-history | An account's ledger updates other than funding since a start time: deposits, withdrawals, USDC sends, spot transfers, vault deposits and withdrawals, liquidations and rewards. Each entry has the time, transaction hash, type and the type's details (amounts, counterparties). |
Jira
io.b3os/jira 1.0.0 · issue-tracking, project-management
Work with Jira Cloud issues using your Atlassian email and API token: search with JQL, read an issue with its rendered description and comments, create issues, comment, move issues through workflow transitions, assign them, and look up projects and users. Uses the Jira Cloud REST API v3 on your <site>.atlassian.net (not Jira Data Center).
| Connection key | Type | What to store |
|---|---|---|
jira | basic | Your Atlassian account email as the username and an API token (id.atlassian.com, Security, API tokens) as the password, plus your site name: acme for acme.atlassian.net. The token acts with your Jira permissions. |
Hosts it reaches: *.atlassian.net.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-myself | read | jira__get-myself | Who the API token belongs to: account id, display name, email and time zone. A cheap way to check the connection and site. |
search-issues | read | jira__search-issues | Find issues with JQL, for example project = PROJ AND status != Done ORDER BY updated DESC, or assignee = currentUser() AND sprint in openSprints(). Returns key, summary, status, type, priority, assignee, labels and dates. Page with next_page_token while is_last is false. |
get-issue | read | jira__get-issue | One issue by key with summary, status, type, priority, people, labels, the description rendered as HTML, and its latest comments (rendered as HTML). |
create-issue | write | jira__create-issue | Create an issue in a project with a summary, an issue type (Task, Bug, Story, ... as named in the project), an optional plain-text description, labels and assignee. Returns the new key and URL. Not idempotent. |
add-comment | write | jira__add-comment | Add a plain-text comment to an issue (sent as one paragraph). Returns the comment id. Not idempotent. |
get-transitions | read | jira__get-transitions | The workflow transitions available on an issue right now (Start progress, Done, ...), with their ids and the status each leads to. transition-issue needs one of these ids. |
transition-issue | write | jira__transition-issue | Move an issue through its workflow with a transition id from get-transitions, for example to In Progress or Done. Fields the transition screen requires are not set by this action. |
assign-issue | write | jira__assign-issue | Assign an issue to a user by account id (find-users looks them up), or unassign it when account_id is omitted. |
find-users | read | jira__find-users | Find people by name or email fragment, with account ids for assign-issue and create-issue. Email is only shown where the user's privacy settings allow. |
list-projects | read | jira__list-projects | Projects visible to the user, optionally filtered by name or key: key, name, type (software, business, service_desk) and id. Page with start_at. |
Kalshi (read-only)
io.b3os/kalshi 1.0.0 · prediction-markets, market-data
Read-only market data from Kalshi, the CFTC-regulated US event-contract exchange: keyword search, markets with live bid, ask and last prices, events, series, order books, candlesticks and recent trades. Keyless public API; no trading and no account data. Prices are dollar strings from 0.0000 to 1.0000 per contract and read as implied probabilities; counts and volumes are fixed-point strings.
No credential: a keyless public API.
Hosts it reaches: api.elections.kalshi.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search | read | kalshi__search | Keyword search over Kalshi series and their live markets (for example knicks, fed rate, bitcoin), ranked by relevance and volume. Each result is a series with its current event and markets, including bid, ask and last prices. Use list-markets to filter by status, event or series instead. |
list-markets | read | kalshi__list-markets | List Kalshi markets filtered by status (unopened, open, closed, settled), event ticker, series ticker or a set of market tickers, with prices, volume, open interest and close time. Page with the returned cursor. |
get-market | read | kalshi__get-market | One Kalshi market by ticker: title, Yes and No labels, status, best bids and asks, last and previous prices, volume, 24-hour volume, open interest, open, close and expiration times, the result once settled, and the primary rules text. Prices are dollar strings per contract (0.0000 to 1.0000). |
get-event | read | kalshi__get-event | One Kalshi event (the question several markets share, such as one game or one rate decision) with its series, category, mutual exclusivity, strike date and, by default, every market in it with prices and volume. |
list-events | read | kalshi__list-events | List Kalshi events by status (open, closed, settled) or series, newest first, with title, category, series and strike date. Page with the cursor; get-event lists an event's markets. |
get-series | read | kalshi__get-series | One Kalshi series (a recurring market template such as daily Bitcoin range or every Fed decision): title, category, frequency, tags, fee type and the settlement sources the exchange uses to resolve it. |
get-orderbook | read | kalshi__get-orderbook | The order book of one Kalshi market: resting Yes bids and No bids as price and contract count, best price last on each side. A No bid at price p is an offer to sell Yes at 1 - p, so the best Yes ask is 1 minus the best No bid. Limit levels per side with depth. |
get-candlesticks | read | kalshi__get-candlesticks | Candlesticks for one Kalshi market between two Unix times: per period the Yes bid and ask OHLC, the trade price distribution (open, high, low, close, mean), volume and open interest, at 1-minute, 1-hour or 1-day periods. Needs the market's series ticker too. |
get-trades | read | kalshi__get-trades | Recent Kalshi trades, newest first, across all markets or for one ticker: trade id, contract count, Yes and No prices, taker side and time. Filter by a Unix time window and page with the cursor. |
Linear
io.b3os/linear 1.0.0 · issue-tracking, project-management
Track work in Linear with your own API key: search and list issues, read an issue with its comments, create issues, move them between workflow states, assign them, comment, and list teams, workflow states and projects. Uses Linear's GraphQL API. A personal API key (Settings, Security & access) or an OAuth access token for your own Linear app works.
| Connection key | Type | What to store |
|---|---|---|
api_key | api_key | A personal API key, sent as the Authorization header as is. An OAuth access token from your own Linear app works too when you store it with the Bearer prefix. |
Hosts it reaches: api.linear.app.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-viewer | read | linear__get-viewer | Who the API key belongs to: user id, name, email and organization (name and URL key). A cheap way to check a connection. |
list-teams | read | linear__list-teams | Teams in the workspace with id, key (the issue prefix) and name. create-issue needs a team id. |
list-workflow-states | read | linear__list-workflow-states | A team's workflow states (Todo, In Progress, Done, ...) with id, name and type. move-issue needs a state id. |
search-issues | read | linear__search-issues | Full-text search over issue titles, descriptions and identifiers in the workspace, best match first: identifier, title, state, priority, assignee, team, labels and URL. Use list-issues to filter one team by state instead. |
list-issues | read | linear__list-issues | A team's issues, most recently updated first, limited to workflow state types you choose (default: everything not completed or canceled). Page with after = the previous end_cursor while has_next_page is true. |
get-issue | read | linear__get-issue | One issue by identifier (ENG-123) or id, with its Markdown description, state, assignee, labels, project, parent and the latest 20 comments. |
create-issue | write | linear__create-issue | Create an issue in a team (team_id from list-teams) with a title and optional Markdown description, priority (0 none to 4 low), assignee, labels and initial state. Returns its identifier and URL. Not idempotent. |
move-issue | write | linear__move-issue | Change an issue's workflow state, for example to In Progress or Done (state ids from list-workflow-states). Returns the issue's new state. |
assign-issue | write | linear__assign-issue | Assign an issue to a user (user id, from get-issue or the Linear app), or unassign it when assignee_id is omitted. |
add-comment | write | linear__add-comment | Add a Markdown comment to an issue. Returns the comment id and URL. Not idempotent. |
list-projects | read | linear__list-projects | Projects in the workspace, most recently updated first: name, state (planned, started, completed, ...), progress from 0 to 1, lead, start and target dates, and URL. |
Morpho vaults
io.b3os/morpho 1.0.0 · defi, crypto, yield
Yields of Morpho (MetaMorpho) lending vaults from Morpho's public API, no key needed: the current gross and net APY, TVL and asset of one vault, and the Morpho-listed vaults with the best net APY for a token on Ethereum, Optimism, Polygon, Base and Arbitrum. Read-only: no deposits, withdrawals or claims.
No credential: a keyless public API.
Hosts it reaches: blue-api.morpho.org.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-vault-apy | read | morpho__get-vault-apy | Get the current APY for a specific Morpho vault by its contract address. Returns gross APY, net APY (after fees), TVL, and underlying asset info. Unlike 'Morpho Get Best APY' which discovers the highest-yielding vault for a token, this action looks up a known vault directly — use it when you already know which vault to check (e.g., after a deposit or withdrawal). Supports Ethereum (1), Optimism (10), Polygon (137), Base (8453), Arbitrum (42161). Ideal for: post-deposit APY reporting, vault monitoring, Slack/Telegram notifications with accurate yield data. |
get-best-apy | read | morpho__get-best-apy | Get the best vault APY for a token on Morpho Blue protocol. Only returns Morpho-curated vaults (excludes unlisted/test vaults). Requires a token contract address. Omit chainId to search all supported chains at once. Supports minApyPercent and limit filters for targeted vault discovery. Supports Ethereum (1), Optimism (10), Polygon (137), Base (8453), Arbitrum (42161). Ideal for: yield optimization, vault discovery, APY comparison, DeFi strategy selection, cross-chain yield alerts. |
National Weather Service
io.b3os/nws 1.0.0 · weather, government-data
Official US weather from the National Weather Service API (api.weather.gov): look up the forecast grid for a coordinate, then read the 7-day or hourly forecast, active watches, warnings and advisories, and the latest observation from a station. Keyless, read-only, public-domain data; covers the US and its territories only (use io.b3os/open-meteo elsewhere).
No credential: a keyless public API.
Hosts it reaches: api.weather.gov.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-point | read | nws__get-point | Resolve a US coordinate to its forecast office and grid cell (office, grid_x, grid_y), which get-forecast and get-hourly-forecast need, plus the nearest city, time zone, forecast zone, county and radar station. Call this first. |
get-forecast | read | nws__get-forecast | The 7-day forecast for a grid cell in 12-hour periods (Today, Tonight, Monday, ...): temperature, chance of precipitation, wind and a detailed text forecast written by the NWS office. Get office, grid_x and grid_y from get-point. |
get-hourly-forecast | read | nws__get-hourly-forecast | Hour-by-hour forecast for a grid cell for about the next 6 days (156 periods): temperature, chance of precipitation, wind and a short forecast per hour. Large; prefer get-forecast unless you need hours. Get office, grid_x and grid_y from get-point. |
get-active-alerts | read | nws__get-active-alerts | Active watches, warnings and advisories (tornado, flood, winter storm, heat, red flag, ...) for a US state or marine area code, or for the point at a coordinate. Give either area or latitude and longitude. Each alert has the event, severity, urgency, certainty, affected areas, effective and expiry times, the headline, description and safety instructions. |
get-latest-observation | read | nws__get-latest-observation | The most recent observation from a weather station (ICAO id such as KEUG for Eugene airport): temperature, dew point, humidity, wind, gusts, pressure, visibility and a short description, in SI units (degrees C, km/h, Pa, m). Values can be null when the station did not report them. |
Notion
io.b3os/notion 1.0.0 · knowledge, documents, productivity
Search, read and write Notion with your own internal integration: find pages and databases, read a page's properties and text, query a database with Notion filters and sorts, create pages, append paragraphs, update properties, archive pages and comment. Uses Notion API version 2022-06-28. The integration only sees pages and databases shared with it (Share, Connections).
| Connection key | Type | What to store |
|---|---|---|
token | bearer | The internal integration secret (ntn_ or secret_) from notion.so/profile/integrations, or an OAuth access token of your own public integration. Share each page or database the actions need with the integration. |
Hosts it reaches: api.notion.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search | read | notion__search | Search the pages and databases shared with the integration by title, most recently edited first, optionally only pages or only databases. Returns ids, titles, URLs and edit times; page with next_cursor. |
get-page | read | notion__get-page | One page's title, URL, parent, edit times and all property values (status, people, dates, relations, ...) in Notion's shape. Its text is in get-page-content. |
get-page-content | read | notion__get-page-content | The blocks of a page (or of any block with children) in order, each with its type (paragraph, heading_1, to_do, bulleted_list_item, code, ...), plain text and whether it has nested children. One level per call: read a nested block by passing its id; page with next_cursor. |
get-database | read | notion__get-database | A database's title, URL, the name of its title property and its property schema, keyed by property name: each property's type and, for select, multi_select and status, the allowed options. Read it before query-database or create-page to know the property names. |
query-database | read | notion__query-database | Rows (pages) of a database matching a Notion filter, in a Notion sort order: for example filter {"property": "Status", "status": {"equals": "In progress"}} and sorts [{"property": "Due", "direction": "ascending"}]. Returns each row's title, URL and property values; page with next_cursor. |
create-page | write | notion__create-page | Create a page with a title and an optional first paragraph, as a child of a page (parent_page_id) or as a row of a database (database_id). For a database row the title goes into the property named by title_property (default Name); to set other columns too, pass properties in Notion's shape including the title property, and title is then ignored. Returns the new page's id and URL. Not idempotent. |
append-paragraphs | write | notion__append-paragraphs | Append plain-text paragraphs (each up to 2,000 characters, at most 100) to the end of a page or block. Returns the ids of the new blocks. Not idempotent. |
update-page-properties | write | notion__update-page-properties | Set property values of a page or database row, in Notion's shape, for example {"Status": {"status": {"name": "Done"}}}. Properties not named keep their values. |
archive-page | write | notion__archive-page | Move a page (or database row) to the trash. It can be restored from Notion's trash for 30 days. |
add-comment | write | notion__add-comment | Add a comment to a page's discussion, plain text up to 2,000 characters. The integration needs the Insert comments capability. Not idempotent. |
Open source packages (deps.dev)
io.b3os/deps-dev 1.0.0 · developer-tools, security, open-source
Facts about open source packages from Google's Open Source Insights (deps.dev), no key needed: a package's versions and its default (latest) version, one version's licenses, security advisories, links and deprecation, its resolved dependency graph, a source repository's stars, license and OpenSSF Scorecard, and advisory details with CVSS scores. Covers npm, PyPI, Go, Maven, Cargo, NuGet and RubyGems.
No credential: a keyless public API.
Hosts it reaches: api.deps.dev.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-package | read | deps-dev__get-package | A package's default version (what installs by default, usually the latest stable) with its publish time, the number of versions, and the last versions of deps.dev's version list (it sorts ascending), so the newest come first in the output. |
get-version | read | deps-dev__get-version | One package version: publish time, whether it is the default version, deprecation and its reason, licenses (SPDX), security advisory ids affecting it (look them up with get-advisory), homepage, source repository and the related project id for get-project. |
get-dependencies | read | deps-dev__get-dependencies | The resolved dependency graph of one package version as deps.dev computes it: every package it pulls in with the resolved version and whether it is a direct or an indirect dependency. Large packages can have hundreds of nodes. |
get-project | read | deps-dev__get-project | A source repository's description, homepage, license, stars, forks and open issues, and its OpenSSF Scorecard: the overall score (0 to 10), the scan date and each check (Maintained, Code-Review, Vulnerabilities, ...) with its score and reason. |
get-advisory | read | deps-dev__get-advisory | One security advisory by id (from get-version): title, aliases such as the CVE id, CVSS v3 score and vector, and its OSV page. |
Open-Meteo
io.b3os/open-meteo 1.0.0 · weather, geocoding
Weather for any coordinate on Earth from the Open-Meteo API: current conditions, hourly and daily forecasts up to 16 days, historical weather back to 1940, air quality, and place search to turn a name into coordinates. Keyless: no connection needed. Open-Meteo's free tier is for non-commercial use under 10,000 calls a day; commercial use needs your own Open-Meteo plan. For US locations, io.b3os/nws (the National Weather Service) adds official alerts.
No credential: a keyless public API.
Hosts it reaches: api.open-meteo.com, geocoding-api.open-meteo.com, air-quality-api.open-meteo.com, archive-api.open-meteo.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search-places | read | open-meteo__search-places | Find places by name and get their coordinates, country code, region and time zone, best match first. Use it first when you only have a place name: every weather action in this pack takes latitude and longitude. |
get-current-weather | read | open-meteo__get-current-weather | Current conditions at a coordinate: temperature, feels-like temperature, humidity, precipitation, cloud cover, wind and a plain-words description of the WMO weather code. Values are model data updated every 15 minutes, in the units you ask for. |
get-daily-forecast | read | open-meteo__get-daily-forecast | Daily forecast for up to 16 days at a coordinate: high and low temperature, precipitation total and maximum probability, maximum wind, sunrise, sunset and conditions in words. The days come as parallel arrays: index i of every list in days describes the date days.date[i]. |
get-hourly-forecast | read | open-meteo__get-hourly-forecast | Hour-by-hour forecast for the next 1 to 168 hours at a coordinate: temperature, precipitation and its probability, cloud cover, wind and conditions in words. Parallel arrays: index i of every list in hours describes the hour hours.time[i] (local time). |
get-historical-weather | read | open-meteo__get-historical-weather | Daily weather observed (reanalysis) between two past dates at a coordinate, from 1940 up to about five days ago: high and low temperature, precipitation total, maximum wind and conditions in words. At most 366 days per call. Parallel arrays: index i of every list in days describes days.date[i]. |
get-air-quality | read | open-meteo__get-air-quality | Current air quality at a coordinate from the CAMS models: US and European AQI, PM2.5, PM10, ozone, nitrogen dioxide, sulphur dioxide and carbon monoxide in micrograms per cubic metre. Coverage is global at about 11 km resolution, finer over Europe. |
Polymarket (read-only)
io.b3os/polymarket 1.0.0 · prediction-markets, market-data
Read-only Polymarket prediction-market data from Polymarket's public APIs: search and browse markets and events, prices and full order books, price history, recent trades, a wallet's positions and activity, top holders per outcome, and the trader leaderboard. Keyless; no trading, no wallet, no signing. Prices are 0 to 1 and read as implied probabilities. Availability of trading on Polymarket depends on your jurisdiction; reading data does not.
No credential: a keyless public API.
Hosts it reaches: gamma-api.polymarket.com, clob.polymarket.com, data-api.polymarket.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search | read | polymarket__search | Keyword search across Polymarket events and their markets (questions, outcomes, current prices, volume, liquidity, end dates, token ids), best match first. Use list-markets to browse by volume, newest or end date without a keyword, and get-price or get-order-book with a token id for live prices. |
list-markets | read | polymarket__list-markets | Browse Polymarket markets without a keyword, sorted by 24-hour volume, total volume, liquidity, newest or end date, with filters for open or closed, tag, end-date window, minimum volume and liquidity, or specific condition ids. Returns questions, outcomes, prices, volume, liquidity, end dates and token ids; page with offset. |
get-market | read | polymarket__get-market | One Polymarket market by its slug: question, resolution rules, outcomes with current prices, token ids, volume, liquidity, dates and status. For a multi-market event (several outcomes such as rate brackets) use get-event with the event slug from the polymarket.com/event/<slug> link. |
get-event | read | polymarket__get-event | One Polymarket event by slug with every market in it: for a single question that is one market, for brackets or candidates one market per outcome. Each market has its question, prices, token ids, volume and status. The slug is the last part of a polymarket.com/event/<slug> link. |
list-events | read | polymarket__list-events | Browse Polymarket events (a question and its markets) sorted by 24-hour volume, total volume, liquidity, newest or end date, open or closed, optionally within one tag or end-date window. Returns event summaries with their market count; call get-event with a slug for the markets and prices. At most 10 per page, because one busy event can carry hundreds of markets. |
get-price | read | polymarket__get-price | Live price of one outcome token from the CLOB order book: best bid, best ask, midpoint, spread and last trade price, each 0 to 1. Null bid or ask means that side of the book is empty. Get token ids from a market's token_ids. |
get-order-book | read | polymarket__get-order-book | The full CLOB order book for one outcome token: every bid and ask level with price (0 to 1) and size in shares, plus best bid, best ask, spread, tick size, minimum order size and the last trade price. As the CLOB returns them, bids are sorted ascending and asks descending, so the best level of each side is the last one. |
get-price-history | read | polymarket__get-price-history | Price history of one outcome token from the CLOB: points of time (Unix seconds) and price (0 to 1) over the last hour, 6 hours, day, week, month or all time, at a resolution in minutes you choose. |
get-trades | read | polymarket__get-trades | Recent trades in a market, newest first, from the Data API: side, outcome, price (0 to 1), size in shares, time, trader wallet and display name, and the Polygon transaction hash. Filter by market condition id, by wallet, or both. |
get-positions | read | polymarket__get-positions | Open positions of any Polymarket wallet from the Data API: market, outcome, size in shares, average entry price, current price, initial and current value in USDC, cash and percent P&L, redeemable flag, and slugs. Filter by market or event and sort by value, P&L, size or title. Positions are public on Polygon. |
get-redeemable-positions | read | polymarket__get-redeemable-positions | Positions of a wallet in resolved markets that can be redeemed for USDC, according to the Data API's redeemable flag. Unlike the original action, there is no on-chain balance check, so a position redeemed moments ago can still appear. |
get-top-holders | read | polymarket__get-top-holders | The largest holders of each outcome of a market, from the Data API: wallet, display name or pseudonym, shares held and verified badge, per outcome token. Use it to see who is positioned on each side. |
get-leaderboard | read | polymarket__get-leaderboard | Polymarket's trader leaderboard: rank, wallet, display name, profit and loss and volume in USDC, overall or for one category (politics, sports, crypto, ...) over the last day, week, month or all time, ranked by P&L or volume. |
get-user-activity | read | polymarket__get-user-activity | On-chain activity of any Polymarket wallet, newest first: trades, splits, merges, redemptions, rewards and conversions, with market, outcome, side, price, size, USDC amount, time and transaction hash. Filter by activity type. |
| Trigger | Kind | Ref |
|---|---|---|
| New market | poll | io.b3os/polymarket/new-market@1.0.0 |
Pushbullet
io.b3os/pushbullet 1.0.0 · notifications, messaging, mobile
Push notifications to your own phones and browsers through Pushbullet with your Pushbullet access token: send a note or a link to all devices or one device, and list devices to find their identifiers.
| Connection key | Type | What to store |
|---|---|---|
pushbullet | api_key | An access token from pushbullet.com/#settings/account, sent as the Access-Token header to api.pushbullet.com only. |
Hosts it reaches: api.pushbullet.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
send-push | irreversible | pushbullet__send-push | Send a note, or a link with a URL, to every device on the account or to one device (deviceIden from list-devices). Returns the push identifier. |
list-devices | read | pushbullet__list-devices | Active devices on the Pushbullet account with identifier, nickname, type (android, ios, chrome, firefox, ...) and whether they can receive pushes. |
Resend
io.b3os/resend 1.0.0 · email, messaging, notifications
Send transactional email through Resend with your own Resend API key and a domain you verified in Resend: plain text or HTML, cc, bcc and reply-to, idempotent retries with an idempotency key. Also check an email's delivery status and list your sending domains.
| Connection key | Type | What to store |
|---|---|---|
resend | bearer | A Resend API key (re_...) with sending access, from resend.com/api-keys. |
Hosts it reaches: api.resend.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
send-email | irreversible | resend__send-email | Send one email from an address on a domain verified in your Resend account, as HTML, plain text or both. to, cc and bcc take one address or an array. Pass an idempotency key so a retry does not send twice. Returns the Resend email ID. |
get-email | read | resend__get-email | One sent email by Resend ID: sender, recipients, subject, creation time and its last delivery event (sent, delivered, delivery_delayed, bounced, complained, opened, clicked, ...). |
list-domains | read | resend__list-domains | Domains in the Resend account with their verification status (verified, pending, failed, ...) and region. send-email only works from verified domains. |
S3-compatible storage
io.b3os/s3 1.0.0 · storage, files, open-data
Read and write objects in S3-compatible storage (AWS S3, Cloudflare R2, DigitalOcean Spaces, Backblaze B2, Wasabi, Linode, Google Cloud Storage) through presigned URLs you generate with your own keys, and read public AWS buckets by name (open data such as NOAA). Objects come back as text, or parsed JSON for JSON objects; binary objects are not supported. No access keys are stored: this pack cannot sign requests.
No credential: a keyless public API.
Hosts it reaches: *.amazonaws.com, *.r2.cloudflarestorage.com, *.r2.dev, *.digitaloceanspaces.com, *.backblazeb2.com, *.wasabisys.com, *.linodeobjects.com, storage.googleapis.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-object | read | s3__get-object | Download a text or JSON object from a presigned GET URL or a public object URL, with its content type, size, ETag and Last-Modified. |
head-object | read | s3__head-object | Content type, size, ETag and Last-Modified of an object from a presigned HEAD URL or a public URL, without downloading it. Use it to check that an object exists. |
put-object | write | s3__put-object | Upload text (CSV, JSON, Markdown, logs, ...) to a presigned PUT URL, replacing any object at that key. If the URL was signed with a Content-Type, pass the same content_type. Returns the new ETag. |
delete-object | irreversible | s3__delete-object | Delete the object a presigned DELETE URL points to. S3 answers 204 whether or not the key existed. |
get-public-object | read | s3__get-public-object | Download a text or JSON object from a public AWS S3 bucket by bucket name and key, for example bucket noaa-ghcn-pds and key ghcnd-version.txt (AWS Open Data). Uses the bucket's global virtual-hosted endpoint. |
list-public-objects | read | s3__list-public-objects | List keys in a public AWS S3 bucket (ListObjectsV2), optionally under a prefix and grouped by a delimiter such as /. Returns S3's ListBucketResult XML as text: Contents (Key, Size, LastModified, ETag), CommonPrefixes, IsTruncated and NextContinuationToken for the next page. |
SEC EDGAR
io.b3os/sec-edgar 1.0.0 · finance, filings, open-data
US public company filings from the SEC's EDGAR system (no key): find a company's CIK by name or ticker, read its profile and latest filings, full-text search filings by phrase, form type, company and date, and read reported XBRL financial facts (revenue, net income, assets, shares, ...) across periods. The connection only holds the User-Agent the SEC asks for (your name and email).
| Connection key | Type | What to store |
|---|---|---|
sec | none | The SEC's fair access policy asks automated clients to send a User-Agent with a company or person name and a contact email, for example "Acme Research ops@acme.example", and to stay under 10 requests per second. |
Hosts it reaches: efts.sec.gov, data.sec.gov.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search-companies | read | sec-edgar__search-companies | Companies, funds and people that file with the SEC, matched by name or ticker as you type (for example apple or AAPL), best match first, with CIK and tickers. |
get-company | read | sec-edgar__get-company | A filer's profile (name, tickers, exchanges, industry SIC code, filer category, fiscal year end, state of incorporation, business address, former names) and its most recent filings, newest first, with form type, dates, primary document and a link to the filing index. |
search-filings | read | sec-edgar__search-filings | EDGAR full-text search over filings since 2001: an exact phrase in quotes or words, optionally only some form types (10-K, 10-Q, 8-K, S-1, DEF 14A, ...), companies (CIKs) and a filing date range. Without a query it lists a company's filings of a form, newest first. 100 hits per page; page with from. |
get-concept | read | sec-edgar__get-concept | Every value a company reported for one XBRL concept, newest first: for example us-gaap Revenues, RevenueFromContractWithCustomerExcludingAssessedTax, NetIncomeLoss, Assets or EarningsPerShareDiluted, or dei EntityCommonStockSharesOutstanding. Each fact has its period, value, fiscal year and period, form and filing date; the same period appears again when later filings repeat it. |
Slack
io.b3os/slack 1.0.0 · messaging, collaboration
Post, reply to, edit and delete messages, react, search, manage channels, members, user groups, reminders and status in a Slack workspace through the Web API, with your own Slack app's bot or user token. Converted from the original B3OS Slack actions: same inputs and the same {success, data: {ret}} envelope, where ret is Slack's own response. Bot tokens (xoxb-) cover most actions; search, reminders and status need a user token (xoxp-). The event trigger receives Events API deliveries for your app, verified with its signing secret.
| Connection key | Type | What to store |
|---|---|---|
token | bearer | A bot token (xoxb-) or user token (xoxp-) from your own Slack app, with the scopes the actions you use need: chat:write, channels:read, groups:read, channels:manage, reactions:write, users:read, users:read.email, files:read, files:write, usergroups:read, usergroups:write; user tokens add search:read, reminders:write, users.profile:write. |
Hosts it reaches: slack.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
send-message | write | slack__send-message | Post a message to a channel, a DM (pass a user id as channel) or a thread (pass thread_ts). The bot must be a member of private channels. Returns the message ts, which identifies it for replies, edits, reactions and deletes. Not idempotent: two calls post twice. |
reply-to-message | write | slack__reply-to-message | Reply in the thread of an existing message (thread_ts is the parent message's ts). Returns the reply's ts. Not idempotent. |
send-block-kit-message | write | slack__send-block-kit-message | Post a Block Kit message: blocks is the JSON array of layout blocks (sections, buttons, images, ...) as a string, and text is the plain fallback shown in notifications. Build and preview layouts in Slack's Block Kit Builder. Not idempotent. |
update-message | write | slack__update-message | Replace the text of a message the token's user or bot posted. Returns the updated message. |
delete-message | irreversible | slack__delete-message | Delete a message. Bot tokens can delete the bot's own messages; user tokens their user's messages (admins more). Cannot be undone. |
add-reaction | write | slack__add-reaction | Add an emoji reaction to a message, by emoji name without colons (thumbsup, eyes, white_check_mark). |
list-channels | read | slack__list-channels | List channels the token can see: public by default, or any of public_channel, private_channel, mpim, im (comma-separated). Each channel has id, name, privacy, membership, topic, purpose and member count. Page with next_cursor (empty on the last page). |
get-channel-info | read | slack__get-channel-info | Details of one channel: name, privacy, archived flag, creator, creation time, topic, purpose and member count. |
create-channel | write | slack__create-channel | Create a public or private channel. Names are lowercase, without spaces or periods, up to 80 characters. Returns the new channel with its id. |
archive-channel | write | slack__archive-channel | Archive a channel. Members keep read access to its history; nobody can post until it is unarchived. |
set-channel-topic | write | slack__set-channel-topic | Set a channel's topic (shown in the channel header). |
set-channel-description | write | slack__set-channel-description | Set a channel's description (its purpose). |
invite-user-to-channel | write | slack__invite-user-to-channel | Invite up to 100 users (comma-separated user ids) to a channel the token's bot or user is in. |
kick-user | write | slack__kick-user | Remove a user from a channel. They can rejoin a public channel unless they are invited again or the channel is private. |
list-members-in-channel | read | slack__list-members-in-channel | User ids of a channel's members, one page at a time (next_cursor in response_metadata). Resolve ids with get-user-info or list-users. |
list-replies | read | slack__list-replies | The messages of a thread, parent first: user, text, ts and reactions. ts is the parent message's ts. has_more and response_metadata.next_cursor page long threads. |
find-message | read | slack__find-message | Search messages across the workspace with Slack's search syntax (in:#channel, from:@user, before:, after:, has:link). Needs a user token with search:read; bot tokens cannot search. Returns matches with channel, author, text, ts and permalink. |
find-user-by-email | read | slack__find-user-by-email | Find a workspace member by email address: id, name, real name, display name, time zone and profile. Needs users:read.email. |
list-users | read | slack__list-users | Workspace members with id, name, real name, time zone, bot and deleted flags and profile, one page at a time (next_cursor in response_metadata). |
get-current-user | read | slack__get-current-user | Who the token belongs to: workspace URL and name, user or bot name and their ids. A cheap way to check that a connection works. |
get-file | read | slack__get-file | Metadata of one uploaded file: name, title, type, size, uploader, channels it was shared in and permalink. Downloading the bytes needs the url_private link with the same token, which this action does not fetch. |
list-files | read | slack__list-files | Files in the workspace, newest first, optionally in one channel, by one user or of given types (spaces, snippets, images, gdocs, zips, pdfs). Paged with count and page. |
delete-file | irreversible | slack__delete-file | Delete an uploaded file. Cannot be undone. |
create-reminder | write | slack__create-reminder | Create a Slackbot reminder for the token's user (or another user): time is a Unix timestamp, a number of seconds from now, or English like in 15 minutes or every Thursday. Needs a user token with reminders:write. |
set-status | write | slack__set-status | Set the token user's status text, emoji (:palm_tree:) and optional expiry (Unix seconds; 0 keeps it). An empty status_text clears the status. Needs a user token with users.profile:write. |
list-group-members | read | slack__list-group-members | User ids in a user group (an @handle such as @oncall). Needs usergroups:read. |
update-group-members | write | slack__update-group-members | Replace the members of a user group with the given user ids (comma-separated), for example to rotate @oncall. Needs usergroups:write. |
| Trigger | Kind | Ref |
|---|---|---|
| Slack event | webhook | io.b3os/slack/event@1.0.0 |
Stripe (read-only)
io.b3os/stripe 1.0.0 · payments, billing
Read your Stripe account with your own restricted key: balance, customers (list, get, search), charges, payment intents, invoices with line items, subscriptions, products, prices and events, plus triggers for new events (polled, or delivered to a webhook endpoint you add in the Stripe Dashboard). Read-only: nothing here creates, changes or refunds anything. Amounts are in the smallest currency unit (cents). Test-mode keys read test data.
| Connection key | Type | What to store |
|---|---|---|
secret_key | bearer | A restricted key (rk_live_ or rk_test_) with Read access to the resources the actions use (Balance, Customers, Charges, PaymentIntents, Invoices, Subscriptions, Products, Prices, Events). A secret key works too but grants far more than this pack needs. |
Hosts it reaches: api.stripe.com.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
get-balance | read | stripe__get-balance | Funds in the Stripe balance per currency: available now and pending (not yet settled), in the smallest currency unit. |
list-customers | read | stripe__list-customers | Customers, newest first, optionally only those with an exact email. Page with starting_after = the last id while has_more is true. |
get-customer | read | stripe__get-customer | One customer by id: email, name, description, currency, credit balance, delinquent flag and metadata. |
search-customers | read | stripe__search-customers | Search customers with Stripe's search query language, for example email:'jane@example.com', name~'jane', metadata['crm_id']:'8812' or created>1700000000, combined with AND/OR. Newly changed customers can take up to a minute to appear. Page with next_page. |
list-charges | read | stripe__list-charges | Charges, newest first, optionally for one customer: amount, refunded amount, status, paid and refunded flags, failure message and receipt URL. |
list-payment-intents | read | stripe__list-payment-intents | Payment intents, newest first, optionally for one customer, with amount, amount received, status and latest charge. |
get-payment-intent | read | stripe__get-payment-intent | One payment intent by id: amount, amount received, currency, status, customer, latest charge and metadata. |
list-invoices | read | stripe__list-invoices | Invoices, newest first, filtered by customer, subscription or status (draft, open, paid, uncollectible, void), with totals, amounts due and paid, due date, hosted page and PDF links and line items. |
get-invoice | read | stripe__get-invoice | One invoice by id with status, number, totals, amounts due, paid and remaining, due date, links and line items. |
list-subscriptions | read | stripe__list-subscriptions | Subscriptions filtered by customer, price or status (default: everything not canceled), with status, renewal time, cancel-at-period-end flag and items (price, product, quantity, unit amount, interval). |
list-products | read | stripe__list-products | Products, newest first, optionally only active ones: name, description, active flag, default price and metadata. |
list-prices | read | stripe__list-prices | Prices, newest first, optionally for one product or only active ones: unit amount, currency, one-time or recurring interval, nickname and lookup key. |
list-events | read | stripe__list-events | Account events of the last 30 days, newest first, optionally only some types (invoice.paid, customer.subscription.deleted, charge.refunded, ...). ending_before returns only events newer than that event id. |
get-event | read | stripe__get-event | One event by id, including the object it describes in data.object. Stripe keeps events for 30 days. |
| Trigger | Kind | Ref |
|---|---|---|
| Stripe event | poll | io.b3os/stripe/event@1.0.0 |
| Stripe event (webhook) | webhook | io.b3os/stripe/webhook-event@1.0.0 |
Wikipedia
io.b3os/wikipedia 1.0.0 · knowledge, reference, search
Search Wikipedia in any language edition, read an article's summary or its full plain text, and get the events, births and deaths that happened on a calendar day. Uses the public MediaWiki Action API and the Wikimedia REST API. Keyless and read-only; content is CC BY-SA 4.0, so cite the article URL when you reuse text.
No credential: a keyless public API.
Hosts it reaches: *.wikipedia.org.
| Action | Effect | MCP tool | Does |
|---|---|---|---|
search | read | wikipedia__search | Full-text search of one Wikipedia edition. Returns matching articles with a short snippet (HTML, matches wrapped in <span class="searchmatch">), word count and last edit time, best match first; use offset with next_offset to page. Follow up with get-summary or get-article-text for the content. |
get-summary | read | wikipedia__get-summary | The lead of one article: a one-line description, the first paragraph as plain text, a thumbnail and the canonical URL. Follows redirects (US to United States). type is disambiguation when the title is ambiguous; search for a more precise title then. |
get-article-text | read | wikipedia__get-article-text | An article's text as plain text, with section headings kept as == Heading == lines. Long articles produce long text; set intro_only to get only the part before the first heading. Follows redirects. For a short overview use get-summary. |
get-on-this-day | read | wikipedia__get-on-this-day | What happened on a calendar day in any year, from Wikipedia's On this day feed: selected anniversaries, all events, births, deaths or holidays. Each item has the year (null for holidays), a one-line description and the articles it links to. |