Skip to content

Data Providers

Agents rarely live on the LLM alone — they read issues, send emails, move money. TapPass ships a catalogue of data providers with a uniform governance layer: every operation is policy-checked, audited, and subject to PII redaction before hitting the vendor.

ProviderOperationsEU residencyGo to
GitHubRepos, issues, PRs, code searchUS (SCC)GitHub
SlackMessages, channels, searchUS (SCC)Slack
JiraIssues, transitions, commentsUS (SCC)Jira
GmailSend, search, labelsUS (SCC)Gmail
Google DriveList, download, createUS (SCC)Google Drive
StripePayments, subscriptions, Connect, IssuingEU / USStripe
RevolutPayment intents, transfers, cardsEU (Lithuania)Configured via YAML
WhatsApp BusinessSend, read, mark readUS (SCC)Configured via YAML
Holded (accounting)Invoicing, contacts, documentsEUConfigured via YAML

Every data provider is declared in a YAML spec under config/providers/*.yaml and backed by GenericHTTPAdapter (or a specialised adapter like GmailAdapter).

config/providers/github.yaml
name: github
api_base_url: https://api.github.com
auth:
type: oauth2
operations:
- name: list_issues
op_group: read
method: GET
endpoint: /repos/{owner}/{repo}/issues
- name: create_issue
op_group: write
method: POST
endpoint: /repos/{owner}/{repo}/issues

Your agent calls them through TapPass — never directly:

result = agent.call_provider(
provider="github",
operation="list_issues",
params={"owner": "tappass", "repo": "tappass"},
)

On every call:

  • Authzauthz.rego decides if this agent can use this provider and op
  • Detection — payloads are scanned for PII / secrets before leaving
  • Policytool_decision.rego can approve/block by op + args (e.g., no send_message to @external-* channels)
  • Audit — operation, args, result, and policy verdict are all recorded
  • Rate limit / budget — per-agent and per-provider quotas

Drop a YAML spec under config/providers/<name>.yaml pointing at any REST API. The GenericHTTPAdapter handles OAuth / Bearer / API-key auth, templated endpoints, and response parsing — no Python required for the common case.

name: myvendor
display_name: "My Vendor"
api_base_url: https://api.myvendor.com
auth:
type: bearer
header: Authorization
operations:
- name: list_things
op_group: read
method: GET
endpoint: /things
adapter_class: tappass.vault.providers.generic.GenericHTTPAdapter

For complex protocols (MIME construction, signed requests, non-REST), subclass ProviderAdapter — see tappass/vault/providers/gmail.py for a reference.