For years I’ve been writing on API Evangelist about the idea of a personal API footprint — the idea that every individual should have a single, coherent surface representing themselves across the dozens (or hundreds) of services they touch every day. I’ve explored this with partners, sketched it at Postman, and watched the pattern slowly become normalized inside individual APIs: GitHub has /user, Slack has auth.test, Spotify has /me, Notion has /users/me, Bluesky has getProfile. Almost every platform now agrees that “me” is a high priority API resource,they just don’t agree on what “me” looks like, where it lives, or how to compose it.
With today’s alpha release of Naftiko, I can finally stop talking about this and start iterating on it for realz. So I built the /me capability, a single Naftiko 0.5 capability file that defines my personal API footprint as both an HTTP API and an MCP server, covering 84 of the services I actually depend on.
The Capability
This personal capability does three things for me that helps me standardize the concept of what a /me API does.
- Consumes the services I use, normalizing how I read from them — whether they speak REST, RSS, or only render HTML.
- Exposes an HTTP API on port 8081 with a
GET /meendpoint that aggregates my identity across services. - Exposes an MCP server on port 8080 with ~63 read-only tools for individual resources, plus the same aggregated
metool.
An important thing to highlight it’s read-only by design. No writes, no posts, no deletes. This is about reading my own footprint, not making changes to any of the data. this is something I’ll handle with other capabilities.
The Services
The 84 accounts split into three access patterns based on what each service actually offers:
Direct API access (35 services) — the platforms that have proper APIs with bearer-token auth and a real /me-style endpoint. GitHub, Bluesky, Discord, Slack, Notion, Dropbox, Spotify, LinkedIn, Mastodon, Stripe, PayPal, Plaid, Wise, Cloudflare, Postman, Docker Hub, Twilio, OpenAI, Fastmail, Calendly, Zoom, Canva, DocuSign, Formspree, Buttondown, Inoreader, Bitly, EasyCron, YouTube, Pinterest, SoundCloud, Etsy, Uber, Hover, G2.
RSS feeds (13 sources) — read-only content streams where the service publishes a feed but no useful personal API. API Evangelist, BBC, DZone, The Economist, Hacker News, HackerNoon, Medium, NY Times, PBS, Politico, Substack, The New Stack, Crunchbase News.
HTML pages (15 services) — the financial, travel, civic, and institutional accounts where there’s no API at all and the only way to read my own data is to scrape the page I’d otherwise log into. Amazon orders, Chase, E*TRADE, Credit Karma, Amtrak, Alaska Air, Expedia, CVS prescriptions, Extra Space, TriNet, Zillow saved homes, Ancestry, IETF, MIT, MoMA, NYPL, NY.gov.
This split is itself a statement about the state of personal APIs in 2026: about 40% of the services I use have a real API, 15% have a feed, and the remaining 45% — including most of my financial and institutional life, which will require scraping a webpage to get at my own information.
Consumes & Produces
On the consume side, each service is normalized into a Naftiko consumes namespace with one or more resources and operations. A GitHub consumes block defines the bearer auth, the /user resource, the /user/repos resource, gists, and notifications. A Bluesky consumes block defines the AT Protocol XRPC endpoints. An RSS feed consumes block uses outputRawFormat: "xml" and maps $.rss.channel.item into structured arrays of titles, links, and pub dates. An HTML consumes block uses outputRawFormat: "html" to extract structured data from a rendered page.
The point is that once a service is wrapped in a consumes block, the rest of the capability doesn’t care whether the data came from a REST API, an RSS feed, or a scraped page. Everything downstream just sees normalized JSON.
On the produce side, the capability exposes what I need to power my CLaude usage in my VSCode, desktop, and in the browser.
GET /me— the headline endpoint. Calls the identity endpoint of 17 services in parallel (GitHub, Bluesky, Discord, Slack, Notion, Spotify, Dropbox, LinkedIn, Mastodon, Stripe, PayPal, Cloudflare, Postman, Docker, Fastmail, OpenAI, Zoom) and returns a single JSON object keyed by service. This is my personal API footprint as one HTTP response.- 63 MCP tools for individual resources:
get-my-repos,get-my-bluesky-feed,get-my-slack-channels,get-my-notion-pages,get-my-stripe-balance,get-my-spotify-recently-played,get-feed-hacker-news,get-my-amazon-orders, and so on. Each is a thin, read-only projection over the underlying consume. - An MCP
account-summaryprompt that takes a timeframe argument and asks for a cross-account activity summary. - An MCP
account-indexresource describing the connected accounts and their status.
Beyond Agents & Copilots
The natural assumption when you see “MCP server” is that this is a thing for Claude or Cursor or some other agent to call. And yes, it is. But I find it just as interesting when you treat your personal API footprint as a regular HTTP API that any application or CRON job can hit.
A few things this prototype /me capability offers:
- A personal dashboard — a simple web page that hits
GET /meonce and renders my current state across every service I care about. No 17 separate OAuth flows in the front-end. No 17 vendor SDKs. One endpoint. - A personal status page — a public (or private) page generated from my own footprint, showing what I’m reading, writing, listening to, shipping, and spending — assembled from sources I control rather than from whatever each platform decides to surface.
- Cross-service automations that aren’t agents — a cron job that pulls
/meonce an hour, diffs it against the previous snapshot, and writes a structured changelog. No LLM required. No prompt. Just data. - Personal analytics over time — because everything flows through one API, I can log responses to a database and finally answer questions like “how has my GitHub activity correlated with my Substack posting cadence over the last year?” Today that question requires writing five separate ETL scripts.
- A backup of my own footprint — if my personal API is the canonical read interface to my digital life, then snapshotting it on a schedule is a backup of who I am across services, in a format I own.
- Embedded use in other apps I build — any side project I write can ask “what is Kin’s current state?” without me wiring up another OAuth integration. The personal API is the integration.
- A substrate for portability — if I ever want to leave a platform, the
consumesblock for that platform is also a map of what I’d need to extract. The capability is documentation as much as it is runtime.
The agents and copilots are real, and they’re definitely a consumer of this. But they’re not the reason. The reason is that I should not have to log in to 84 different websites to understand my own life, and no individual vendor is going to solve that for me. The only entity with the incentive to build a unified read view of me is me.
Naftiko Alpha Release
Until now, “personal API footprint” was a slide. Each time I wanted to actually build it, I hit the same wall: writing 84 bespoke integrations is a project, not a side project, and the second I finished one, three of the upstream APIs would change and I’d be back to maintenance hell.
What Naftiko gives me, and what made today the day I actually built this, is the declarative format where each service is a consumes block, each consume is a chunk of YAML I can edit in isolation, and the runtime handles the auth, the HTTP, the XML parsing, the HTML extraction, the MCP wiring, and the HTTP server. The capability file is ~2,000 lines, but it is 2,000 lines of declaration, not 2,000 lines of glue code. When GitHub changes its API, I edit one resource block. When I want to add a new service, I add one consumes namespace and one tool.
This is the approach I’ve been hoping for. The personal API footprint stops being a possible and starts being a file I can iterate on, push to a repo, run, and begin iterating on over time.
What is Next?
This first cut is intentionally read-only and intentionally broad — I wanted to see all 84 services in one file, even the ones where my only option is HTML scraping, because the gaps are part of the story. From here I want to:
- Tighten the identity-bearing services so
GET /mereturns a clean, normalized profile schema instead of a per-service object soup. - Add a snapshot/diff layer so the capability can answer “what changed since last time” without an agent in the loop.
- Start writing the next layer: the things you can build on top of a personal API once you have one.
- Playing what is possible within Claude when I have access to all of this data on a reliable basis.
I can just run this capability locally for now. Keep iterating and playing with what is possible. Then I’ll likely deploy using a Cloudflare worker so that I can access across machines, servers, and services–like with my CRON service.
This capability represents Kin Lane. I need to think about the separation with API Evangelist. I also need to think about what the separation is with my Naftiko capabilities. This is something that Naftiko affords when it comes to the tagging and domain-driven capabilities, so I am not worried, and interested in seeing what is possible.
naftiko: "0.5"
info:
label: "Kin Lane /me API and MCP"
description: "Unified read-only capability providing access to my personal resources across all accounts. Exposes an /me endpoint aggregating profile and resource data, with MCP server support for agent-driven access."
tags:
- Personal
- Read-Only
- Agreggator
- /me
created: "2026-04-03"
modified: "2026-04-07"
capability:
exposes:
# ---------------------------------------------------------------
# HTTP API - exposes /me as a REST endpoint alongside MCP
# ---------------------------------------------------------------
- type: "http"
namespace: "my-accounts-http"
address: "0.0.0.0"
port: 8081
description: "Personal accounts HTTP API providing a /me endpoint for aggregated read-only profile access."
resources:
- name: "me"
path: "/me"
description: "Aggregated personal profile across all connected accounts."
operations:
- name: "http-get-me"
method: "GET"
description: "Returns aggregated identity data from all connected accounts."
steps:
- name: github-me
type: call
call: "github.get-me"
- name: bluesky-me
type: call
call: "bluesky.get-profile"
- name: discord-me
type: call
call: "discord.get-me"
- name: slack-me
type: call
call: "slack.get-me"
- name: notion-me
type: call
call: "notion.get-me"
- name: spotify-me
type: call
call: "spotify.get-me"
- name: dropbox-me
type: call
call: "dropbox.get-me"
- name: linkedin-me
type: call
call: "linkedin.get-me"
- name: mastodon-me
type: call
call: "mastodon.get-me"
- name: stripe-me
type: call
call: "stripe.get-me"
- name: paypal-me
type: call
call: "paypal.get-me"
- name: cloudflare-me
type: call
call: "cloudflare.get-me"
- name: postman-me
type: call
call: "postman.get-me"
- name: docker-me
type: call
call: "docker.get-me"
- name: fastmail-me
type: call
call: "fastmail.get-me"
- name: openai-me
type: call
call: "openai.get-me"
- name: zoom-me
type: call
call: "zoom.get-me"
outputParameters:
- name: github
type: object
mapping: ""
- name: bluesky
type: object
mapping: ""
- name: discord
type: object
mapping: ""
- name: slack
type: object
mapping: ""
- name: notion
type: object
mapping: ""
- name: spotify
type: object
mapping: ""
- name: dropbox
type: object
mapping: ""
- name: linkedin
type: object
mapping: ""
- name: mastodon
type: object
mapping: ""
- name: stripe
type: object
mapping: ""
- name: paypal
type: object
mapping: ""
- name: cloudflare
type: object
mapping: ""
- name: postman
type: object
mapping: ""
- name: docker
type: object
mapping: ""
- name: fastmail
type: object
mapping: ""
- name: openai
type: object
mapping: ""
- name: zoom
type: object
mapping: ""
# ---------------------------------------------------------------
# MCP Server
# ---------------------------------------------------------------
- type: "mcp"
namespace: "my-accounts"
port: 8080
description: "Personal accounts MCP server providing read-only access to resources across all services."
tools:
# ---------------------------------------------------------------
# /me - Aggregated personal profile
# ---------------------------------------------------------------
- name: "me"
label: "Get My Profile"
description: "Returns an aggregated view of my identity, profiles, and key resources across all connected accounts."
steps:
- name: github-me
type: call
call: "github.get-me"
- name: bluesky-me
type: call
call: "bluesky.get-profile"
- name: discord-me
type: call
call: "discord.get-me"
- name: slack-me
type: call
call: "slack.get-me"
- name: notion-me
type: call
call: "notion.get-me"
- name: spotify-me
type: call
call: "spotify.get-me"
- name: dropbox-me
type: call
call: "dropbox.get-me"
- name: linkedin-me
type: call
call: "linkedin.get-me"
- name: mastodon-me
type: call
call: "mastodon.get-me"
- name: stripe-me
type: call
call: "stripe.get-me"
- name: paypal-me
type: call
call: "paypal.get-me"
- name: cloudflare-me
type: call
call: "cloudflare.get-me"
- name: postman-me
type: call
call: "postman.get-me"
- name: docker-me
type: call
call: "docker.get-me"
- name: fastmail-me
type: call
call: "fastmail.get-me"
- name: openai-me
type: call
call: "openai.get-me"
- name: zoom-me
type: call
call: "zoom.get-me"
outputParameters:
- name: github
type: object
mapping: ""
- name: bluesky
type: object
mapping: ""
- name: discord
type: object
mapping: ""
- name: slack
type: object
mapping: ""
- name: notion
type: object
mapping: ""
- name: spotify
type: object
mapping: ""
- name: dropbox
type: object
mapping: ""
- name: linkedin
type: object
mapping: ""
- name: mastodon
type: object
mapping: ""
- name: stripe
type: object
mapping: ""
- name: paypal
type: object
mapping: ""
- name: cloudflare
type: object
mapping: ""
- name: postman
type: object
mapping: ""
- name: docker
type: object
mapping: ""
- name: fastmail
type: object
mapping: ""
- name: openai
type: object
mapping: ""
- name: zoom
type: object
mapping: ""
# ---------------------------------------------------------------
# Developer Tools
# ---------------------------------------------------------------
- name: "get-my-repos"
description: "List my GitHub repositories."
call: "github.list-my-repos"
outputParameters:
- name: repos
type: array
mapping: "$.items"
- name: "get-my-gists"
description: "List my GitHub gists."
call: "github.list-my-gists"
outputParameters:
- name: gists
type: array
mapping: "$.items"
- name: "get-my-github-notifications"
description: "Get my GitHub notifications."
call: "github.list-notifications"
outputParameters:
- name: notifications
type: array
mapping: "$.items"
- name: "get-my-postman-workspaces"
description: "List my Postman workspaces."
call: "postman.list-workspaces"
outputParameters:
- name: workspaces
type: array
mapping: "$.workspaces"
- name: "get-my-postman-collections"
description: "List my Postman collections."
call: "postman.list-collections"
outputParameters:
- name: collections
type: array
mapping: "$.collections"
- name: "get-my-docker-repos"
description: "List my Docker Hub repositories."
call: "docker.list-repos"
outputParameters:
- name: repositories
type: array
mapping: "$.results"
- name: "get-my-cloudflare-zones"
description: "List my Cloudflare zones/domains."
call: "cloudflare.list-zones"
outputParameters:
- name: zones
type: array
mapping: "$.result"
- name: "get-my-cloudflare-analytics"
description: "Get Cloudflare analytics for a zone."
inputParameters:
- name: zone_id
in: body
type: string
call: "cloudflare.get-zone-analytics"
with:
zone_id: ""
outputParameters:
- name: analytics
type: object
mapping: "$.result"
# ---------------------------------------------------------------
# Social & Communication
# ---------------------------------------------------------------
- name: "get-my-bluesky-feed"
description: "Get my Bluesky timeline."
call: "bluesky.get-timeline"
outputParameters:
- name: feed
type: array
mapping: "$.feed"
- name: "get-my-bluesky-notifications"
description: "Get my Bluesky notifications."
call: "bluesky.get-notifications"
outputParameters:
- name: notifications
type: array
mapping: "$.notifications"
- name: "get-my-discord-guilds"
description: "List my Discord servers."
call: "discord.list-guilds"
outputParameters:
- name: guilds
type: array
mapping: "$.items"
- name: "get-my-slack-channels"
description: "List my Slack channels."
call: "slack.list-channels"
outputParameters:
- name: channels
type: array
mapping: "$.channels"
- name: "get-my-slack-messages"
description: "Get recent messages from a Slack channel."
inputParameters:
- name: channel
in: body
type: string
call: "slack.get-channel-history"
with:
channel: ""
outputParameters:
- name: messages
type: array
mapping: "$.messages"
- name: "get-my-mastodon-timeline"
description: "Get my Mastodon home timeline."
call: "mastodon.get-timeline"
outputParameters:
- name: statuses
type: array
mapping: "$.items"
- name: "get-my-mastodon-notifications"
description: "Get my Mastodon notifications."
call: "mastodon.get-notifications"
outputParameters:
- name: notifications
type: array
mapping: "$.items"
- name: "get-my-reddit-feed"
description: "Get my Reddit front page feed."
call: "reddit.get-my-feed"
outputParameters:
- name: posts
type: array
mapping: "$.data.children"
- name: "get-my-reddit-saved"
description: "Get my saved Reddit posts."
call: "reddit.get-saved"
outputParameters:
- name: saved
type: array
mapping: "$.data.children"
# ---------------------------------------------------------------
# Content & Productivity
# ---------------------------------------------------------------
- name: "get-my-notion-pages"
description: "Search my Notion workspace."
inputParameters:
- name: query
in: body
type: string
call: "notion.search"
with:
query: ""
outputParameters:
- name: results
type: array
mapping: "$.results"
- name: "get-my-notion-databases"
description: "List my Notion databases."
call: "notion.search-databases"
outputParameters:
- name: databases
type: array
mapping: "$.results"
- name: "get-my-dropbox-files"
description: "List files in my Dropbox."
inputParameters:
- name: path
in: body
type: string
call: "dropbox.list-folder"
with:
path: ""
outputParameters:
- name: entries
type: array
mapping: "$.entries"
- name: "get-my-ghost-posts"
description: "List my Ghost blog posts."
call: "ghost.list-posts"
outputParameters:
- name: posts
type: array
mapping: "$.posts"
- name: "get-my-buttondown-subscribers"
description: "List my Buttondown newsletter subscribers."
call: "buttondown.list-subscribers"
outputParameters:
- name: subscribers
type: array
mapping: "$.results"
- name: "get-my-buttondown-emails"
description: "List my Buttondown sent emails."
call: "buttondown.list-emails"
outputParameters:
- name: emails
type: array
mapping: "$.results"
- name: "get-my-canva-designs"
description: "List my Canva designs."
call: "canva.list-designs"
outputParameters:
- name: designs
type: array
mapping: "$.items"
- name: "get-my-docusign-envelopes"
description: "List my DocuSign envelopes."
call: "docusign.list-envelopes"
outputParameters:
- name: envelopes
type: array
mapping: "$.envelopes"
- name: "get-my-formspree-submissions"
description: "List my Formspree form submissions."
inputParameters:
- name: form_id
in: body
type: string
call: "formspree.list-submissions"
with:
form_id: ""
outputParameters:
- name: submissions
type: array
mapping: "$.submissions"
# ---------------------------------------------------------------
# Email & Calendar
# ---------------------------------------------------------------
- name: "get-my-fastmail-mailboxes"
description: "List my Fastmail mailboxes."
call: "fastmail.list-mailboxes"
outputParameters:
- name: mailboxes
type: array
mapping: "$.list"
- name: "get-my-calendly-events"
description: "List my upcoming Calendly events."
call: "calendly.list-events"
outputParameters:
- name: events
type: array
mapping: "$.collection"
- name: "get-my-zoom-meetings"
description: "List my upcoming Zoom meetings."
call: "zoom.list-meetings"
outputParameters:
- name: meetings
type: array
mapping: "$.meetings"
# ---------------------------------------------------------------
# Finance & Payments
# ---------------------------------------------------------------
- name: "get-my-stripe-balance"
description: "Get my Stripe account balance."
call: "stripe.get-balance"
outputParameters:
- name: balance
type: object
mapping: "$"
- name: "get-my-stripe-charges"
description: "List recent Stripe charges."
call: "stripe.list-charges"
outputParameters:
- name: charges
type: array
mapping: "$.data"
- name: "get-my-paypal-transactions"
description: "List recent PayPal transactions."
call: "paypal.list-transactions"
outputParameters:
- name: transactions
type: array
mapping: "$.transaction_details"
- name: "get-my-plaid-accounts"
description: "List my linked Plaid financial accounts."
call: "plaid.get-accounts"
outputParameters:
- name: accounts
type: array
mapping: "$.accounts"
- name: "get-my-wise-balances"
description: "Get my Wise multi-currency balances."
call: "wise.get-balances"
outputParameters:
- name: balances
type: array
mapping: "$.items"
# ---------------------------------------------------------------
# Media & Entertainment
# ---------------------------------------------------------------
- name: "get-my-spotify-playlists"
description: "List my Spotify playlists."
call: "spotify.list-playlists"
outputParameters:
- name: playlists
type: array
mapping: "$.items"
- name: "get-my-spotify-recently-played"
description: "Get my recently played Spotify tracks."
call: "spotify.get-recently-played"
outputParameters:
- name: items
type: array
mapping: "$.items"
- name: "get-my-youtube-subscriptions"
description: "List my YouTube subscriptions."
call: "youtube.list-subscriptions"
outputParameters:
- name: subscriptions
type: array
mapping: "$.items"
- name: "get-my-youtube-playlists"
description: "List my YouTube playlists."
call: "youtube.list-playlists"
outputParameters:
- name: playlists
type: array
mapping: "$.items"
- name: "get-my-pinterest-boards"
description: "List my Pinterest boards."
call: "pinterest.list-boards"
outputParameters:
- name: boards
type: array
mapping: "$.items"
- name: "get-my-soundcloud-tracks"
description: "List my SoundCloud tracks and likes."
call: "soundcloud.get-my-tracks"
outputParameters:
- name: tracks
type: array
mapping: "$.collection"
# ---------------------------------------------------------------
# URL & Links
# ---------------------------------------------------------------
- name: "get-my-bitly-links"
description: "List my Bitly shortened links."
call: "bitly.list-links"
outputParameters:
- name: links
type: array
mapping: "$.links"
# ---------------------------------------------------------------
# AI Services
# ---------------------------------------------------------------
- name: "get-my-openai-models"
description: "List available OpenAI models."
call: "openai.list-models"
outputParameters:
- name: models
type: array
mapping: "$.data"
- name: "get-my-openai-usage"
description: "Get my OpenAI API usage."
call: "openai.get-usage"
outputParameters:
- name: usage
type: object
mapping: "$"
# ---------------------------------------------------------------
# RSS Feed Reader
# ---------------------------------------------------------------
- name: "get-my-inoreader-subscriptions"
description: "List my Inoreader RSS subscriptions."
call: "inoreader.list-subscriptions"
outputParameters:
- name: subscriptions
type: array
mapping: "$.subscriptions"
- name: "get-my-inoreader-unread"
description: "Get unread items from Inoreader."
call: "inoreader.get-unread"
outputParameters:
- name: items
type: array
mapping: "$.items"
# ---------------------------------------------------------------
# Scheduling & Automation
# ---------------------------------------------------------------
- name: "get-my-easycron-jobs"
description: "List my EasyCron scheduled jobs."
call: "easycron.list-jobs"
outputParameters:
- name: jobs
type: array
mapping: "$.cron_jobs"
# ---------------------------------------------------------------
# Shopping & Marketplace
# ---------------------------------------------------------------
- name: "get-my-etsy-listings"
description: "List my Etsy shop listings."
call: "etsy.list-my-listings"
outputParameters:
- name: listings
type: array
mapping: "$.results"
- name: "get-my-amazon-orders"
description: "Get recent Amazon order status."
call: "amazon-html.get-orders"
outputParameters:
- name: orders
type: array
mapping: "$.orders"
# ---------------------------------------------------------------
# Travel & Transportation
# ---------------------------------------------------------------
- name: "get-my-uber-trips"
description: "Get my recent Uber trip history."
call: "uber.get-trip-history"
outputParameters:
- name: trips
type: array
mapping: "$.trips"
- name: "get-my-expedia-trips"
description: "Get my Expedia trip itineraries."
call: "expedia-html.get-trips"
outputParameters:
- name: trips
type: array
mapping: "$.trips"
# ---------------------------------------------------------------
# Domains & Hosting
# ---------------------------------------------------------------
- name: "get-my-hover-domains"
description: "List my Hover domain registrations."
call: "hover.list-domains"
outputParameters:
- name: domains
type: array
mapping: "$.domains"
# ---------------------------------------------------------------
# RSS Feeds - News, Tech & Content
# ---------------------------------------------------------------
- name: "get-feed-api-evangelist"
description: "Get latest API Evangelist posts via RSS."
call: "rss-feeds.api-evangelist"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-bbc"
description: "Get latest BBC news via RSS."
call: "rss-feeds.bbc-news"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-dzone"
description: "Get latest DZone articles via RSS."
call: "rss-feeds.dzone"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-economist"
description: "Get latest Economist articles via RSS."
call: "rss-feeds.economist"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-hacker-news"
description: "Get top Hacker News stories via RSS."
call: "rss-feeds.hacker-news"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-hackernoon"
description: "Get latest HackerNoon articles via RSS."
call: "rss-feeds.hackernoon"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-medium"
description: "Get latest Medium articles via RSS."
call: "rss-feeds.medium"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-nytimes"
description: "Get latest NY Times headlines via RSS."
call: "rss-feeds.nytimes"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-pbs"
description: "Get latest PBS news via RSS."
call: "rss-feeds.pbs"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-politico"
description: "Get latest Politico articles via RSS."
call: "rss-feeds.politico"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-substack"
description: "Get latest Substack newsletter posts via RSS."
call: "rss-feeds.substack"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-the-new-stack"
description: "Get latest The New Stack articles via RSS."
call: "rss-feeds.the-new-stack"
outputParameters:
- name: items
type: array
mapping: ""
- name: "get-feed-crunchbase"
description: "Get latest Crunchbase news via RSS."
call: "rss-feeds.crunchbase"
outputParameters:
- name: items
type: array
mapping: ""
# ---------------------------------------------------------------
# MCP Resources - Static references
# ---------------------------------------------------------------
resources:
- name: "account-index"
label: "Account Index"
uri: "data://my-accounts/index"
description: "Index of all connected personal accounts and their status."
mimeType: "application/json"
prompts:
- name: "account-summary"
label: "Account Summary"
description: "Generate a summary of activity across my accounts."
arguments:
- name: "timeframe"
description: "Time period to summarize (e.g. today, this-week, this-month)"
required: false
template:
- role: "user"
content: "Summarize my activity across all connected accounts for . Include notifications, messages, recent content, and any items needing attention."
# ===================================================================
# CONSUMES - API Services
# ===================================================================
consumes:
# -----------------------------------------------------------------
# GitHub
# -----------------------------------------------------------------
- namespace: "github"
type: "http"
baseUri: "https://api.github.com"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "github_token"
in: "environment"
- name: "Accept"
in: "header"
value: "application/vnd.github+json"
resources:
- name: "me"
path: "/user"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: login
type: string
value: "$.login"
- name: name
type: string
value: "$.name"
- name: bio
type: string
value: "$.bio"
- name: public_repos
type: integer
value: "$.public_repos"
- name: "my-repos"
path: "/user/repos"
operations:
- name: "list-my-repos"
method: "GET"
inputParameters:
- name: sort
in: query
value: "updated"
- name: per_page
in: query
value: "30"
outputParameters:
- name: items
type: array
value: "$"
- name: "my-gists"
path: "/gists"
operations:
- name: "list-my-gists"
method: "GET"
outputParameters:
- name: items
type: array
value: "$"
- name: "notifications"
path: "/notifications"
operations:
- name: "list-notifications"
method: "GET"
outputParameters:
- name: items
type: array
value: "$"
# -----------------------------------------------------------------
# Bluesky (AT Protocol)
# -----------------------------------------------------------------
- namespace: "bluesky"
type: "http"
baseUri: "https://bsky.social/xrpc"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "bluesky_token"
in: "environment"
resources:
- name: "profile"
path: "/app.bsky.actor.getProfile"
operations:
- name: "get-profile"
method: "GET"
inputParameters:
- name: actor
in: query
outputParameters:
- name: handle
type: string
value: "$.handle"
- name: displayName
type: string
value: "$.displayName"
- name: followersCount
type: integer
value: "$.followersCount"
- name: "timeline"
path: "/app.bsky.feed.getTimeline"
operations:
- name: "get-timeline"
method: "GET"
outputParameters:
- name: feed
type: array
value: "$.feed"
- name: "notifications"
path: "/app.bsky.notification.listNotifications"
operations:
- name: "get-notifications"
method: "GET"
outputParameters:
- name: notifications
type: array
value: "$.notifications"
# -----------------------------------------------------------------
# Discord
# -----------------------------------------------------------------
- namespace: "discord"
type: "http"
baseUri: "https://discord.com/api/v10"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "discord_token"
in: "environment"
resources:
- name: "me"
path: "/users/@me"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: username
type: string
value: "$.username"
- name: email
type: string
value: "$.email"
- name: "guilds"
path: "/users/@me/guilds"
operations:
- name: "list-guilds"
method: "GET"
outputParameters:
- name: items
type: array
value: "$"
# -----------------------------------------------------------------
# Slack
# -----------------------------------------------------------------
- namespace: "slack"
type: "http"
baseUri: "https://slack.com/api"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "slack_token"
in: "environment"
resources:
- name: "me"
path: "/auth.test"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: user
type: string
value: "$.user"
- name: team
type: string
value: "$.team"
- name: "channels"
path: "/conversations.list"
operations:
- name: "list-channels"
method: "GET"
outputParameters:
- name: channels
type: array
value: "$.channels"
- name: "history"
path: "/conversations.history"
inputParameters:
- name: channel
in: query
operations:
- name: "get-channel-history"
method: "GET"
outputParameters:
- name: messages
type: array
value: "$.messages"
# -----------------------------------------------------------------
# Notion
# -----------------------------------------------------------------
- namespace: "notion"
type: "http"
baseUri: "https://api.notion.com/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "notion_token"
in: "environment"
- name: "Notion-Version"
in: "header"
value: "2022-06-28"
resources:
- name: "me"
path: "/users/me"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: name
type: string
value: "$.name"
- name: type
type: string
value: "$.type"
- name: "search"
path: "/search"
operations:
- name: "search"
method: "POST"
inputParameters:
- name: query
in: body
body:
type: "json"
data:
query: ""
outputParameters:
- name: results
type: array
value: "$.results"
- name: "search-databases"
method: "POST"
body:
type: "json"
data:
filter:
property: "object"
value: "database"
outputParameters:
- name: results
type: array
value: "$.results"
# -----------------------------------------------------------------
# Spotify
# -----------------------------------------------------------------
- namespace: "spotify"
type: "http"
baseUri: "https://api.spotify.com/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "spotify_token"
in: "environment"
resources:
- name: "me"
path: "/me"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: display_name
type: string
value: "$.display_name"
- name: email
type: string
value: "$.email"
- name: "playlists"
path: "/me/playlists"
operations:
- name: "list-playlists"
method: "GET"
outputParameters:
- name: items
type: array
value: "$.items"
- name: "recently-played"
path: "/me/player/recently-played"
operations:
- name: "get-recently-played"
method: "GET"
outputParameters:
- name: items
type: array
value: "$.items"
# -----------------------------------------------------------------
# Dropbox
# -----------------------------------------------------------------
- namespace: "dropbox"
type: "http"
baseUri: "https://api.dropboxapi.com/2"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "dropbox_token"
in: "environment"
resources:
- name: "me"
path: "/users/get_current_account"
operations:
- name: "get-me"
method: "POST"
outputParameters:
- name: name
type: string
value: "$.name.display_name"
- name: email
type: string
value: "$.email"
- name: "files"
path: "/files/list_folder"
operations:
- name: "list-folder"
method: "POST"
inputParameters:
- name: path
in: body
body:
type: "json"
data:
path: ""
outputParameters:
- name: entries
type: array
value: "$.entries"
# -----------------------------------------------------------------
# LinkedIn
# -----------------------------------------------------------------
- namespace: "linkedin"
type: "http"
baseUri: "https://api.linkedin.com/v2"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "linkedin_token"
in: "environment"
resources:
- name: "me"
path: "/me"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: firstName
type: string
value: "$.localizedFirstName"
- name: lastName
type: string
value: "$.localizedLastName"
# -----------------------------------------------------------------
# Mastodon (kinlane.com)
# -----------------------------------------------------------------
- namespace: "mastodon"
type: "http"
baseUri: "https://mastodon.social/api/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "mastodon_token"
in: "environment"
resources:
- name: "me"
path: "/accounts/verify_credentials"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: username
type: string
value: "$.username"
- name: display_name
type: string
value: "$.display_name"
- name: followers_count
type: integer
value: "$.followers_count"
- name: "home-timeline"
path: "/timelines/home"
operations:
- name: "get-timeline"
method: "GET"
outputParameters:
- name: items
type: array
value: "$"
- name: "notifications"
path: "/notifications"
operations:
- name: "get-notifications"
method: "GET"
outputParameters:
- name: items
type: array
value: "$"
# -----------------------------------------------------------------
# Reddit
# -----------------------------------------------------------------
- namespace: "reddit"
type: "http"
baseUri: "https://oauth.reddit.com"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "reddit_token"
in: "environment"
resources:
- name: "my-feed"
path: "/best"
operations:
- name: "get-my-feed"
method: "GET"
outputParameters:
- name: data
type: object
value: "$.data"
- name: "saved"
path: "/user/me/saved"
operations:
- name: "get-saved"
method: "GET"
outputParameters:
- name: data
type: object
value: "$.data"
# -----------------------------------------------------------------
# Stripe
# -----------------------------------------------------------------
- namespace: "stripe"
type: "http"
baseUri: "https://api.stripe.com/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "stripe_token"
in: "environment"
resources:
- name: "me"
path: "/account"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: id
type: string
value: "$.id"
- name: business_profile
type: object
value: "$.business_profile"
- name: "balance"
path: "/balance"
operations:
- name: "get-balance"
method: "GET"
outputParameters:
- name: available
type: array
value: "$.available"
- name: "charges"
path: "/charges"
operations:
- name: "list-charges"
method: "GET"
inputParameters:
- name: limit
in: query
value: "25"
outputParameters:
- name: data
type: array
value: "$.data"
# -----------------------------------------------------------------
# PayPal
# -----------------------------------------------------------------
- namespace: "paypal"
type: "http"
baseUri: "https://api-m.paypal.com/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "paypal_token"
in: "environment"
resources:
- name: "me"
path: "/identity/oauth2/userinfo"
inputParameters:
- name: schema
in: query
value: "paypalv1.1"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: name
type: string
value: "$.name"
- name: emails
type: array
value: "$.emails"
- name: "transactions"
path: "/reporting/transactions"
operations:
- name: "list-transactions"
method: "GET"
outputParameters:
- name: transaction_details
type: array
value: "$.transaction_details"
# -----------------------------------------------------------------
# Plaid
# -----------------------------------------------------------------
- namespace: "plaid"
type: "http"
baseUri: "https://production.plaid.com"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "plaid_token"
in: "environment"
resources:
- name: "accounts"
path: "/accounts/get"
operations:
- name: "get-accounts"
method: "POST"
body:
type: "json"
data:
client_id: ""
secret: ""
access_token: ""
outputParameters:
- name: accounts
type: array
value: "$.accounts"
# -----------------------------------------------------------------
# Wise
# -----------------------------------------------------------------
- namespace: "wise"
type: "http"
baseUri: "https://api.wise.com/v4"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "wise_token"
in: "environment"
resources:
- name: "balances"
path: "/profiles//balances"
inputParameters:
- name: profile_id
in: path
operations:
- name: "get-balances"
method: "GET"
inputParameters:
- name: types
in: query
value: "STANDARD"
outputParameters:
- name: items
type: array
value: "$"
# -----------------------------------------------------------------
# Cloudflare
# -----------------------------------------------------------------
- namespace: "cloudflare"
type: "http"
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "cloudflare_token"
in: "environment"
resources:
- name: "me"
path: "/user"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: email
type: string
value: "$.result.email"
- name: username
type: string
value: "$.result.username"
- name: "zones"
path: "/zones"
operations:
- name: "list-zones"
method: "GET"
outputParameters:
- name: result
type: array
value: "$.result"
- name: "zone-analytics"
path: "/zones//analytics/dashboard"
inputParameters:
- name: zone_id
in: path
operations:
- name: "get-zone-analytics"
method: "GET"
outputParameters:
- name: result
type: object
value: "$.result"
# -----------------------------------------------------------------
# Postman
# -----------------------------------------------------------------
- namespace: "postman"
type: "http"
baseUri: "https://api.getpostman.com"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "postman_token"
in: "environment"
resources:
- name: "me"
path: "/me"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: user
type: object
value: "$.user"
- name: "workspaces"
path: "/workspaces"
operations:
- name: "list-workspaces"
method: "GET"
outputParameters:
- name: workspaces
type: array
value: "$.workspaces"
- name: "collections"
path: "/collections"
operations:
- name: "list-collections"
method: "GET"
outputParameters:
- name: collections
type: array
value: "$.collections"
# -----------------------------------------------------------------
# Docker Hub
# -----------------------------------------------------------------
- namespace: "docker"
type: "http"
baseUri: "https://hub.docker.com/v2"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "docker_token"
in: "environment"
resources:
- name: "me"
path: "/user"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: username
type: string
value: "$.username"
- name: "repos"
path: "/repositories/"
inputParameters:
- name: username
in: path
operations:
- name: "list-repos"
method: "GET"
outputParameters:
- name: results
type: array
value: "$.results"
# -----------------------------------------------------------------
# Twilio
# -----------------------------------------------------------------
- namespace: "twilio"
type: "http"
baseUri: "https://api.twilio.com/2010-04-01"
authentication:
type: "basic"
username: ""
password: ""
inputParameters:
- name: "twilio_sid"
in: "environment"
- name: "twilio_token"
in: "environment"
resources:
- name: "account"
path: "/Accounts/.json"
operations:
- name: "get-account"
method: "GET"
outputParameters:
- name: friendly_name
type: string
value: "$.friendly_name"
- name: status
type: string
value: "$.status"
- name: "messages"
path: "/Accounts//Messages.json"
operations:
- name: "list-messages"
method: "GET"
outputParameters:
- name: messages
type: array
value: "$.messages"
# -----------------------------------------------------------------
# OpenAI
# -----------------------------------------------------------------
- namespace: "openai"
type: "http"
baseUri: "https://api.openai.com/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "openai_token"
in: "environment"
resources:
- name: "me"
path: "/me"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: user
type: object
value: "$"
- name: "models"
path: "/models"
operations:
- name: "list-models"
method: "GET"
outputParameters:
- name: data
type: array
value: "$.data"
- name: "usage"
path: "/usage"
operations:
- name: "get-usage"
method: "GET"
outputParameters:
- name: usage
type: object
value: "$"
# -----------------------------------------------------------------
# Fastmail (JMAP)
# -----------------------------------------------------------------
- namespace: "fastmail"
type: "http"
baseUri: "https://api.fastmail.com/jmap/api"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "fastmail_token"
in: "environment"
resources:
- name: "me"
path: "/.well-known/jmap"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: username
type: string
value: "$.username"
- name: accounts
type: object
value: "$.accounts"
- name: "mailboxes"
path: "/"
operations:
- name: "list-mailboxes"
method: "POST"
body:
type: "json"
data:
using: ["urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail"]
methodCalls:
- ["Mailbox/get", {"accountId": ""}, "0"]
outputParameters:
- name: list
type: array
value: "$.methodResponses[0][1].list"
# -----------------------------------------------------------------
# Calendly
# -----------------------------------------------------------------
- namespace: "calendly"
type: "http"
baseUri: "https://api.calendly.com"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "calendly_token"
in: "environment"
resources:
- name: "events"
path: "/scheduled_events"
operations:
- name: "list-events"
method: "GET"
inputParameters:
- name: status
in: query
value: "active"
outputParameters:
- name: collection
type: array
value: "$.collection"
# -----------------------------------------------------------------
# Zoom
# -----------------------------------------------------------------
- namespace: "zoom"
type: "http"
baseUri: "https://api.zoom.us/v2"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "zoom_token"
in: "environment"
resources:
- name: "me"
path: "/users/me"
operations:
- name: "get-me"
method: "GET"
outputParameters:
- name: email
type: string
value: "$.email"
- name: display_name
type: string
value: "$.display_name"
- name: "meetings"
path: "/users/me/meetings"
operations:
- name: "list-meetings"
method: "GET"
outputParameters:
- name: meetings
type: array
value: "$.meetings"
# -----------------------------------------------------------------
# Canva
# -----------------------------------------------------------------
- namespace: "canva"
type: "http"
baseUri: "https://api.canva.com/rest/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "canva_token"
in: "environment"
resources:
- name: "designs"
path: "/designs"
operations:
- name: "list-designs"
method: "GET"
outputParameters:
- name: items
type: array
value: "$.items"
# -----------------------------------------------------------------
# DocuSign
# -----------------------------------------------------------------
- namespace: "docusign"
type: "http"
baseUri: "https://www.docusign.net/restapi/v2.1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "docusign_token"
in: "environment"
resources:
- name: "envelopes"
path: "/accounts//envelopes"
inputParameters:
- name: account_id
in: path
operations:
- name: "list-envelopes"
method: "GET"
inputParameters:
- name: from_date
in: query
outputParameters:
- name: envelopes
type: array
value: "$.envelopes"
# -----------------------------------------------------------------
# Formspree
# -----------------------------------------------------------------
- namespace: "formspree"
type: "http"
baseUri: "https://formspree.io/api/0"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "formspree_token"
in: "environment"
resources:
- name: "submissions"
path: "/forms//submissions"
inputParameters:
- name: form_id
in: path
operations:
- name: "list-submissions"
method: "GET"
outputParameters:
- name: submissions
type: array
value: "$.submissions"
# -----------------------------------------------------------------
# Buttondown
# -----------------------------------------------------------------
- namespace: "buttondown"
type: "http"
baseUri: "https://api.buttondown.com/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "buttondown_token"
in: "environment"
resources:
- name: "subscribers"
path: "/subscribers"
operations:
- name: "list-subscribers"
method: "GET"
outputParameters:
- name: results
type: array
value: "$.results"
- name: "emails"
path: "/emails"
operations:
- name: "list-emails"
method: "GET"
outputParameters:
- name: results
type: array
value: "$.results"
# -----------------------------------------------------------------
# Inoreader
# -----------------------------------------------------------------
- namespace: "inoreader"
type: "http"
baseUri: "https://www.inoreader.com/reader/api/0"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "inoreader_token"
in: "environment"
resources:
- name: "subscriptions"
path: "/subscription/list"
operations:
- name: "list-subscriptions"
method: "GET"
outputParameters:
- name: subscriptions
type: array
value: "$.subscriptions"
- name: "unread"
path: "/stream/contents/user/-/state/com.google/reading-list"
operations:
- name: "get-unread"
method: "GET"
inputParameters:
- name: n
in: query
value: "50"
- name: xt
in: query
value: "user/-/state/com.google/read"
outputParameters:
- name: items
type: array
value: "$.items"
# -----------------------------------------------------------------
# Bitly
# -----------------------------------------------------------------
- namespace: "bitly"
type: "http"
baseUri: "https://api-ssl.bitly.com/v4"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "bitly_token"
in: "environment"
resources:
- name: "links"
path: "/bitlinks"
operations:
- name: "list-links"
method: "GET"
outputParameters:
- name: links
type: array
value: "$.links"
# -----------------------------------------------------------------
# EasyCron
# -----------------------------------------------------------------
- namespace: "easycron"
type: "http"
baseUri: "https://www.easycron.com/rest"
resources:
- name: "jobs"
path: "/list"
inputParameters:
- name: token
in: query
value: ""
operations:
- name: "list-jobs"
method: "GET"
outputParameters:
- name: cron_jobs
type: array
value: "$.cron_jobs"
# -----------------------------------------------------------------
# YouTube Data API
# -----------------------------------------------------------------
- namespace: "youtube"
type: "http"
baseUri: "https://www.googleapis.com/youtube/v3"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "google_token"
in: "environment"
resources:
- name: "subscriptions"
path: "/subscriptions"
operations:
- name: "list-subscriptions"
method: "GET"
inputParameters:
- name: part
in: query
value: "snippet"
- name: mine
in: query
value: "true"
outputParameters:
- name: items
type: array
value: "$.items"
- name: "playlists"
path: "/playlists"
operations:
- name: "list-playlists"
method: "GET"
inputParameters:
- name: part
in: query
value: "snippet"
- name: mine
in: query
value: "true"
outputParameters:
- name: items
type: array
value: "$.items"
# -----------------------------------------------------------------
# Pinterest
# -----------------------------------------------------------------
- namespace: "pinterest"
type: "http"
baseUri: "https://api.pinterest.com/v5"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "pinterest_token"
in: "environment"
resources:
- name: "boards"
path: "/boards"
operations:
- name: "list-boards"
method: "GET"
outputParameters:
- name: items
type: array
value: "$.items"
# -----------------------------------------------------------------
# SoundCloud
# -----------------------------------------------------------------
- namespace: "soundcloud"
type: "http"
baseUri: "https://api.soundcloud.com"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "soundcloud_token"
in: "environment"
resources:
- name: "my-tracks"
path: "/me/tracks"
operations:
- name: "get-my-tracks"
method: "GET"
outputParameters:
- name: collection
type: array
value: "$.collection"
# -----------------------------------------------------------------
# Etsy
# -----------------------------------------------------------------
- namespace: "etsy"
type: "http"
baseUri: "https://openapi.etsy.com/v3"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "etsy_token"
in: "environment"
- name: "x-api-key"
in: "header"
value: ""
resources:
- name: "my-listings"
path: "/application/shops//listings/active"
inputParameters:
- name: shop_id
in: path
operations:
- name: "list-my-listings"
method: "GET"
outputParameters:
- name: results
type: array
value: "$.results"
# -----------------------------------------------------------------
# Uber
# -----------------------------------------------------------------
- namespace: "uber"
type: "http"
baseUri: "https://api.uber.com/v1.2"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "uber_token"
in: "environment"
resources:
- name: "history"
path: "/history"
operations:
- name: "get-trip-history"
method: "GET"
outputParameters:
- name: trips
type: array
value: "$.history"
# -----------------------------------------------------------------
# Hover
# -----------------------------------------------------------------
- namespace: "hover"
type: "http"
baseUri: "https://www.hover.com/api"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "hover_token"
in: "environment"
resources:
- name: "domains"
path: "/domains"
operations:
- name: "list-domains"
method: "GET"
outputParameters:
- name: domains
type: array
value: "$.domains"
# -----------------------------------------------------------------
# G2 (Company Profiles)
# -----------------------------------------------------------------
- namespace: "g2"
type: "http"
baseUri: "https://data.g2.com/api/v1"
authentication:
type: "bearer"
token: ""
inputParameters:
- name: "g2_token"
in: "environment"
resources:
- name: "products"
path: "/products"
operations:
- name: "list-products"
method: "GET"
outputParameters:
- name: products
type: array
value: "$.data"
# ===================================================================
# CONSUMES - RSS Feeds (Read-Only)
# ===================================================================
- namespace: "rss-feeds"
type: "http"
resources:
- name: "api-evangelist"
path: "/"
baseUri: "https://apievangelist.com/feed.xml"
operations:
- name: "api-evangelist"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: api-evangelist-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: description
type: string
mapping: "$.description"
- name: "bbc"
path: "/"
baseUri: "https://feeds.bbci.co.uk/news/rss.xml"
operations:
- name: "bbc-news"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: bbc-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "dzone"
path: "/"
baseUri: "https://feeds.dzone.com/home"
operations:
- name: "dzone"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: dzone-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "economist"
path: "/"
baseUri: "https://www.economist.com/rss"
operations:
- name: "economist"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: economist-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "hacker-news"
path: "/"
baseUri: "https://hnrss.org/frontpage"
operations:
- name: "hacker-news"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: hn-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: comments
type: string
mapping: "$.comments"
- name: "hackernoon"
path: "/"
baseUri: "https://hackernoon.com/feed"
operations:
- name: "hackernoon"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: hackernoon-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "medium"
path: "/"
baseUri: "https://medium.com/feed/@kinlane"
operations:
- name: "medium"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: medium-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "nytimes"
path: "/"
baseUri: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
operations:
- name: "nytimes"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: nytimes-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "pbs"
path: "/"
baseUri: "https://www.pbs.org/newshour/feeds/rss/headlines"
operations:
- name: "pbs"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: pbs-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "politico"
path: "/"
baseUri: "https://rss.politico.com/politics-news.xml"
operations:
- name: "politico"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: politico-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "substack"
path: "/"
baseUri: "https://kinlane.substack.com/feed"
operations:
- name: "substack"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: substack-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "the-new-stack"
path: "/"
baseUri: "https://thenewstack.io/feed/"
operations:
- name: "the-new-stack"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: tns-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
- name: "crunchbase"
path: "/"
baseUri: "https://news.crunchbase.com/feed/"
operations:
- name: "crunchbase"
method: "GET"
outputRawFormat: "xml"
outputParameters:
- name: crunchbase-items
type: array
mapping: "$.rss.channel.item"
items:
- name: title
type: string
mapping: "$.title"
- name: link
type: string
mapping: "$.link"
- name: pubDate
type: string
mapping: "$.pubDate"
# ===================================================================
# CONSUMES - HTML Pages (Read-Only Scraping)
# ===================================================================
- namespace: "amazon-html"
type: "http"
baseUri: "https://www.amazon.com"
resources:
- name: "orders"
path: "/gp/your-account/order-history"
operations:
- name: "get-orders"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: orders
type: array
mapping: "$.orders"
- namespace: "expedia-html"
type: "http"
baseUri: "https://www.expedia.com"
resources:
- name: "trips"
path: "/trips"
operations:
- name: "get-trips"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: trips
type: array
mapping: "$.trips"
- namespace: "chase-html"
type: "http"
baseUri: "https://secure.chase.com"
resources:
- name: "accounts"
path: "/web/auth/dashboard"
operations:
- name: "get-accounts"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: accounts
type: array
mapping: "$.accounts"
- namespace: "etrade-html"
type: "http"
baseUri: "https://us.etrade.com"
resources:
- name: "portfolio"
path: "/etx/pxy/my-accounts/portfolio"
operations:
- name: "get-portfolio"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: portfolio
type: object
mapping: "$.portfolio"
- namespace: "creditkarma-html"
type: "http"
baseUri: "https://www.creditkarma.com"
resources:
- name: "dashboard"
path: "/dashboard"
operations:
- name: "get-dashboard"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: scores
type: object
mapping: "$.scores"
- namespace: "amtrak-html"
type: "http"
baseUri: "https://www.amtrak.com"
resources:
- name: "reservations"
path: "/account/my-trips"
operations:
- name: "get-reservations"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: reservations
type: array
mapping: "$.reservations"
- namespace: "alaskaair-html"
type: "http"
baseUri: "https://www.alaskaair.com"
resources:
- name: "trips"
path: "/account/my-trips"
operations:
- name: "get-trips"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: trips
type: array
mapping: "$.trips"
- namespace: "cvs-html"
type: "http"
baseUri: "https://www.cvs.com"
resources:
- name: "prescriptions"
path: "/account/rx-refill"
operations:
- name: "get-prescriptions"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: prescriptions
type: array
mapping: "$.prescriptions"
- namespace: "extraspace-html"
type: "http"
baseUri: "https://www.extraspace.com"
resources:
- name: "account"
path: "/myaccount"
operations:
- name: "get-account"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: units
type: array
mapping: "$.units"
- namespace: "trinet-html"
type: "http"
baseUri: "https://www.trinet.com"
resources:
- name: "dashboard"
path: "/dashboard"
operations:
- name: "get-dashboard"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: info
type: object
mapping: "$.employee"
- namespace: "zillow-html"
type: "http"
baseUri: "https://www.zillow.com"
resources:
- name: "saved-homes"
path: "/myzillow/saved-homes"
operations:
- name: "get-saved-homes"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: homes
type: array
mapping: "$.homes"
- namespace: "ancestry-html"
type: "http"
baseUri: "https://www.ancestry.com"
resources:
- name: "trees"
path: "/family-tree"
operations:
- name: "get-trees"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: trees
type: array
mapping: "$.trees"
# ===================================================================
# CONSUMES - Institutional HTML Pages (Read-Only)
# ===================================================================
- namespace: "ietf-html"
type: "http"
baseUri: "https://www.ietf.org"
resources:
- name: "rfcs"
path: "/rfc/"
operations:
- name: "get-recent-rfcs"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: rfcs
type: array
mapping: "$.rfcs"
- namespace: "mit-html"
type: "http"
baseUri: "https://www.mit.edu"
resources:
- name: "news"
path: "/news"
operations:
- name: "get-news"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: articles
type: array
mapping: "$.articles"
- namespace: "moma-html"
type: "http"
baseUri: "https://www.moma.org"
resources:
- name: "exhibitions"
path: "/calendar/exhibitions"
operations:
- name: "get-exhibitions"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: exhibitions
type: array
mapping: "$.exhibitions"
- namespace: "nypl-html"
type: "http"
baseUri: "https://www.nypl.org"
resources:
- name: "events"
path: "/events"
operations:
- name: "get-events"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: events
type: array
mapping: "$.events"
- namespace: "ny-gov-html"
type: "http"
baseUri: "https://www.ny.gov"
resources:
- name: "news"
path: "/news"
operations:
- name: "get-news"
method: "GET"
outputRawFormat: "html"
outputParameters:
- name: articles
type: array
mapping: "$.articles"