Actions

Every action, also called a tool, where they come from, how to find one, and how to run it.

An action is one call to a service with named inputs, such as stripe.post_customers or sheets.read_rows. Operate As builds the service's real request from them, attaches the client's access, and sends it. Agents see the same actions as MCP tools, so the docs use both words.

There are 89,000+ today, across every service below. For anything they don't cover, use a pass-through request.

Where actions come from

KindHow it's madeExamples
GeneratedOne per operation in the API description the service publishes (OpenAPI, or Google's Discovery format). Its inputs are the operation's parameters, plus body for its request bodygithub.issues_list, stripe.post_customers, zendesk.update_ticket
Hand-written17 actions for jobs one plain call can't do, or that read better with simple inputs, such as building an email or uploading a file to Dropboxgmail.send_email, sheets.add_row, dropbox.upload_file

Generated actions are named after the service's own operation, so they follow its API documentation: a path input like spreadsheet_id fills {spreadsheetId} in the path, other parameters go in the query, and body is sent as JSON, or as a form for services such as Stripe that expect one ({"metadata": {"plan": "pro"}} becomes metadata[plan]=pro).

A generated action is only as accurate as the service's API description. If one doesn't behave the way the service's documentation says, use a pass-through request to the same endpoint, and tell us so we can fix it.

Find an action

With thousands to choose from, search instead of reading the whole list:

curl "https://api.operate.as/v1/actions?search=create+customer&service=stripe&limit=5" \
  -H "Authorization: Bearer $OPERATE_AS_API_KEY"
ParameterWhat it does
searchA few words, such as list github issues. A word in an action's name counts most, then the service, then its description. Hand-written actions come first among equals
serviceOnly this service's actions. Repeat it for several. Naming a service in search, as in create jira issue, does the same
limitAt most this many, 10 unless you say, up to 50

Search results leave out each input's full JSON Schema, which can be long. Get one action whole with GET /v1/actions/{name}, such as GET /v1/actions/stripe.post_customers. GET /v1/actions?service=stripe lists one service's actions with their schemas.

One action, everywhere

WhereHow it shows up
n8nThe Action list, with an input field per input
MCPA tool per action, with a dot turned into an underscore: sheets_read_rows
Python, Node, GoA typed method in the service's package: Sheets(client).read_rows(…)
HTTPSPOST /v1/actions/sheets.read_rows

Run an action

curl -X POST https://api.operate.as/v1/actions/sheets.add_row \
  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "6f1c2a7e-...",
    "input": {
      "spreadsheet_id": "1BxiM...",
      "range": "Sheet1!A1",
      "values": ["2026-10-16", "Jane Doe", "Cleaning"]
    }
  }'

The libraries' methods come from each service's typed package: operate-as-sheets for Python, @operate-as/sheets for Node and github.com/arcarolabs/operate-as-go/services/sheets for Go. See Service packages. Get the client's ID from the dashboard or GET /v1/me/clients. The answer is the service's own status and response:

{
  "status": 200,
  "data": { "spreadsheetId": "1BxiM...", "updates": { "updatedRange": "Sheet1!A12:C12", "updatedRows": 1 } },
  "encoding": "json"
}

Check status before trusting data: the service can still refuse, such as for a spreadsheet that doesn't exist. See The result.

Inputs

RuleDetail
Namessnake_case, like spreadsheet_id. camelCase (spreadsheetId) works too, which helps in n8n and with agents
RequiredMust be present and not empty. Missing ones get 400 naming them, such as Missing spreadsheet_id.
OptionalCan be left out. Some have a default, such as calendar_id meaning the client's main calendar
TypesJSON Schema types. array and object inputs take JSON, such as ["a", "b"] for a row's values

GET /v1/actions/{name} returns an action's inputs, each with its jsonSchema when it's more than a plain type, so a program or agent can read them instead of hard-coding them.

Limiting keys to actions

A key can be limited to a list of actions, like sheets.read_rows. In the dashboard's create form, choose Restricted and select them under Tools. See API keys.

Services with actions

Every other service works through pass-through requests.

ServiceKeyToolsHand-written
AWSaws15,071None
Google Cloudgoogle-cloud6,246None
Microsoft Entra IDmicrosoft-entra4,527None
Cloudflarecloudflare3,376None
Autotask PSAautotask2,958None
PostHogposthog2,389None
PostHog EUposthog-eu2,389None
Datadogdatadog1,813None
Google Cloud Agent Platformgoogle-agent-platform1,513None
GitHubgithub1,202None
GitLabgitlab1,145None
OneDrive and Excelonedrive987None
Twiliotwilio864None
SharePointsharepoint824None
DigitalOceandigitalocean792None
Jirajira689None
Outlook calendaroutlook-calendar677None
Oktaokta671None
Microsoft Teamsteams664None
Zendeskzendesk655None
Stripestripe6051
Giteagitea533None
Gitea (self-hosted)gitea-self-hosted533None
Codebergcodeberg496None
Lookerlooker487None
FireHydrantfirehydrant479None
Vercelvercel452None
PagerDutypagerduty451None
Aivenaiven447None
Dialogflow CXdialogflow442None
Prefect Cloudprefect-cloud442None
LangSmithlangsmith431None
Files.comfiles-com421None
Tolgeetolgee409None
DocuSigndocusign394None
LaunchDarklylaunchdarkly387None
Cloudsmithcloudsmith384None
Firebasefirebase384None
ElevenLabselevenlabs365None
Zoomzoom365None
Microsoft Intuneintune360None
Telnyxtelnyx358None
Sumo Logicsumo-logic353None
Rootlyrootly347None
GrowthBookgrowthbook343None
MongoDB Atlasmongodb-atlas342None
Linodelinode338None
OpenAIopenai337None
Google Workspace Admingoogle-workspace-admin328None
Outlookoutlook3081
Mailchimpmailchimp303None
Closeclose302None
Plaidplaid302None
Squaresquare301None
Phrasephrase299None
Bitbucketbitbucket292None
PlanetScaleplanetscale289None
RingCentralringcentral288None
Brevobrevo287None
Microsoft 365 adminmicrosoft-365-admin286None
Apactaapacta283None
Klaviyoklaviyo281None
Vimeovimeo279None
Remoteremote277None
Boxbox274None
Sinaosinao272None
Microsoft 365 Educationmicrosoft-365-education271None
Google Ad Managergoogle-ad-manager267None
Immichimmich266None
Pinterestpinterest266None
WorkOSworkos264None
Trellotrello259None
Instantlyinstantly255None
XTRFxtrf253None
Sentrysentry252None
Sentry (self-hosted)sentry-self-hosted252None
App Store Connectapp-store-connect251None
Asanaasana250None
Rampramp250None
Discorddiscord243None
Frontfront235None
Xx230None
Apifyapify224None
Campaign Manager 360campaign-manager-360218None
Renderrender218None
GetResponsegetresponse217None
Lagolago216None
Xeroxero213None
BeezUPbeezup210None
Google Play Consolegoogle-play210None
ClickSendclicksend205None
Clerkclerk202None
Zavuzavu201None
Pipedrivepipedrive198None
Stream Chatstream-chat197None
BTCPay Serverbtcpay-server195None
Google Adsgoogle-ads193None
Koyebkoyeb183None
Trakttrakt183None
Hubstaffhubstaff180None
Hetzner Cloudhetzner-cloud178None
Display & Video 360display-video-360177None
Neonneon175None
Slackslack1751
Microsoft Defender XDRmicrosoft-defender174None
ClickHouse Cloudclickhouse-cloud169None
Microsoft Plannermicrosoft-planner167None
Mistralmistral166None
Supabasesupabase166None
Adyenadyen160None
Roarkroark159None
Miromiro157None
Google Cloud APIsgoogle-cloud-apis154None
Zulipzulip154None
Clockifyclockify152None
Outlineoutline152None
Checklycheckly151None
Opsgenieopsgenie150None
Servalserval149None
OneNoteonenote147None
OpenRouteropenrouter146None
BigQuerybigquery144None
Probelyprobely143None
Bitlybitly142None
Vapivapi142None
Metronomemetronome138None
ClickUpclickup137None
Resendresend137None
Shortcutshortcut137None
Hookdeckhookdeck135None
LlamaCloudllamacloud130None
Webflowwebflow126None
Codacoda125None
Confluenceconfluence124None
Svixsvix123None
Cal.comcal121None
PostGridpostgrid121None
Netlifynetlify120None
AgentMailagentmail119None
Bitrisebitrise118None
Salesloftsalesloft118None
Braintrustbraintrust117None
Blockfrostblockfrost115None
Increaseincrease114None
Chatwootchatwoot113None
Chatwoot (self-hosted)chatwoot-self-hosted113None
Gristgrist113None
Langfuselangfuse112None
CircleCIcircleci111None
Shutterstockshutterstock109None
Intercomintercom108None
Short.ioshort-io106None
Google Classroomgoogle-classroom104None
Snag Solutionssnag-solutions104None
Etsyetsy102None
Google Tag Managergoogle-tag-manager102None
Hyperswitchhyperswitch102None
Loblob102None
Composiocomposio101None
SIGNL4signl4101None
Datagriddatagrid100None
Mailchimp Transactionalmandrill99None
Paddlepaddle99None
YouTubeyoutube99None
Google Walletgoogle-wallet97None
Attioattio96None
Knockknock95None
Discoursediscourse94None
ConfigCatconfigcat93None
Tailscaletailscale93None
Google Drivedrive921
SF Computesf-compute90None
Spotifyspotify88None
Google Cloud Storagegoogle-cloud-storage87None
Avazaavaza86None
Google Merchant Centergoogle-merchant-center84None
ShipEngineshipengine84None
Moonbasemoonbase82None
Flatflat81None
Gmailgmail801
Typesensetypesense78None
Amazon S3amazon-s377None
Cloudflare R2cloudflare-r277None
DigitalOcean Spacesdigitalocean-spaces77None
Filebasefilebase77None
MinIOminio77None
Storjstorj77None
Tigristigris77None
Wasabiwasabi77None
Billbeebillbee75None
Jira Service Managementjira-service-management74None
Dropbox Signdropbox-sign72None
Novunovu72None
Adafruit IOadafruit-io71None
Loopsloops71None
Shipposhippo71None
Straddlestraddle71None
Qdrantqdrant67None
Cercacerca66None
Notionnotion641
Kajabikajabi62None
Google Analyticsgoogle-analytics61None
Canvacanva59None
ExaVaultexavault58None
Muxmux58None
Telegramtelegram58None
Dubdub57None
PocketSmithpocketsmith56None
Postmanpostman56None
Google Chatgoogle-chat54None
Microsoft To Domicrosoft-todo54None
Preludeprelude54None
Zoom Connectzoomconnect54None
AppVeyorappveyor53None
Microsoft Bookingsmicrosoft-bookings53None
Printfulprintful52None
api.videoapi-video51None
College Football Datacollege-football-data51None
Google Booksgoogle-books51None
e-invoice.bee-invoice-be50None
SoundCloudsoundcloud50None
Sportmonkssportmonks50None
Unlayerunlayer50None
Docker Hubdocker-hub48None
Deepgramdeepgram47None
Tursoturso46None
Honchohoncho45None
Google Cloud Searchgoogle-cloud-search44None
OpenPhoneopenphone43None
Postmarkpostmark43None
TVmazetvmaze42None
Arcadearcade41None
Surgesurge41None
DEV Communitydev-community40None
Figmafigma40None
Google Calendarcalendar402
Labs64 NetLicensingnetlicensing40None
SocialDatasocialdata39None
Contextual AIcontextual-ai38None
Tallytally38None
Firefire37None
Microsoft Azureazure37None
RunPodrunpod37None
Codecovcodecov35None
Greenflashgreenflash35None
Lorikeetlorikeet35None
Replicatereplicate35None
ReadMereadme34None
Bloggerblogger33None
Google Vaultgoogle-vault33None
Billingobillingo31None
Brazebraze31None
GitBookgitbook31None
LeadConnectorlead-connector31None
Pendo Feedbackpendo-feedback31None
YNABynab31None
Moderation APImoderation-api30None
RAWG Video Games Databaserawg30None
OpenRegisteropenregister29None
Writerwriter28None
DataForSEOdataforseo27None
Floraflora27None
Neutrinoneutrino27None
ZeroEntropyzeroentropy27None
Botifybotify26None
Linqlinq26None
Numeralnumeral26None
Google AdSensegoogle-adsense25None
Coherecohere24None
Google Contactsgoogle-contacts24None
Google Maps Platformgoogle-maps24None
Google Meetgoogle-meet24None
Scorecardscorecard23None
ART19art1922None
Ablyably21None
Unifyunify21None
Brand.devbrand-dev20None
Firecrawlfirecrawl20None
Google Search Consolesearch-console20None
Google Photosgoogle-photos19None
Google Sheetssheets192
DeepLdeepl18None
Upup18None
Browshotbrowshot17None
Scan Documentsscan-documents17None
Google Apps Scriptapps-script16None
GraphHoppergraphhopper16None
Handingerhandinger16None
Alchemystalchemyst15None
Google Business Profilegoogle-business-profile15None
journy.iojourny15None
BlazeMeterblazemeter14None
Google Tasksgoogle-tasks14None
Perplexityperplexity14None
Fulfillment.comfulfillment-com13None
Luma AIluma-ai13None
Solvicesolvice13None
AI Inbxai-inbx12None
Blooioblooio12None
Dataleondataleon12None
Geneeageneea12None
Ritekitritekit12None
Royal Mail Click & Droproyal-mail-click-and-drop12None
Val Townval-town12None
VisibleThreadvisiblethread12None
WinSMSwinsms11None
Giphygiphy10None
Google Formsgoogle-forms10None
Google Postmaster Toolspostmaster-tools10None
GOV.UK Paygov-uk-pay10None
Polygonpolygon10None
Tagguntaggun10None
Spinitronspinitron9None
Filloutfillout8None
Instagraminstagram8None
Spitchspitch8None
Bandwidthbandwidth7None
Exaexa7None
Rev AIrev-ai7None
Shorten.RESTshorten-rest7None
Google AdMobgoogle-admob6None
Google Keepgoogle-keep6None
Klarnaklarna6None
LinkedInlinkedin6None
Llama APIllama-api6None
Search Ads 360search-ads-3606None
Caesarcaesar5None
Cerebrascerebras5None
Chrome Web Storegoogle-chrome-web-store5None
Google Slidesgoogle-slides5None
LanguageToollanguagetool5None
Meta Adsmeta-ads5None
Ours Privacyours-privacy5None
LinkedIn Adslinkedin-ads4None
WebScraping.AIwebscraping-ai4None
WhatsApp Businesswhatsapp4None
Dropboxdropbox33
Facebook Lead Adsfacebook-lead-ads3None
Google Docsgoogle-docs3None
IBANAPIibanapi3None
Remove.bgremove-bg3None
SendGridsendgrid3None
Airtableairtable22
FASHNfashn2None
Google Local Services Adsgoogle-local-services-ads2None
HubSpothubspot22
Json2Videojson2video2None
1Password Connect1password-connect1None
Facebook Pagesfacebook-pages1None
Ip2Locationip2location1None
IP2Location.ioip2location-io1None
Ip2Proxyip2proxy1None
Ip2Whoisip2whois1None
Nasanasa1None
Vonagevonage1None

Hand-written actions

sheets.read_rows

Read rows from a range of a spreadsheet.

InputTypeRequiredWhat it is
spreadsheet_idstringYesThe ID in the sheet's address, after /d/
rangestringYesWhich cells, e.g. Sheet1!A1:D20

sheets.add_row

Add a row after the last row of a range.

InputTypeRequiredWhat it is
spreadsheet_idstringYesThe ID in the sheet's address, after /d/
rangestringYesWhich cells, e.g. Sheet1!A1:D20
valuesarrayYesThe row's cells, in order

calendar.list_events

List upcoming events on a calendar.

InputTypeRequiredWhat it is
calendar_idstringNoLeave empty for the main calendar
time_minstringNoOnly events after this time (RFC 3339)
max_resultsintegerNoAt most this many

calendar.create_event

Create an event on a calendar.

InputTypeRequiredWhat it is
summarystringYesThe event's title
startstringYesWhen it starts (RFC 3339, e.g. 2026-11-02T10:00:00-05:00)
endstringYesWhen it ends (RFC 3339)
calendar_idstringNoLeave empty for the main calendar
descriptionstringNoNotes on the event

gmail.send_email

Send an email from the client's address.

InputTypeRequiredWhat it is
tostringYesWho to send it to
subjectstringYesSubject
bodystringYesText

drive.list_files

List files in Google Drive.

InputTypeRequiredWhat it is
querystringNoA Drive search, e.g. name contains 'invoice'
page_sizeintegerNoAt most this many

outlook.send_email

Send an email from the client's Outlook.

InputTypeRequiredWhat it is
tostringYesWho to send it to
subjectstringYesSubject
bodystringYesText

slack.send_message

Send a message to a channel.

InputTypeRequiredWhat it is
channelstringYesThe channel's ID or #name
textstringYesThe message

hubspot.create_contact

Add a contact to the CRM.

InputTypeRequiredWhat it is
emailstringYesTheir email address
firstnamestringNoFirst name
lastnamestringNoLast name
propertiesobjectNoAny other HubSpot properties

hubspot.search_contacts

Find contacts by name, email or company.

InputTypeRequiredWhat it is
querystringYesWhat to search for

airtable.list_records

List records in a table.

InputTypeRequiredWhat it is
base_idstringYesThe base's ID, starting app
tablestringYesThe table's name or ID
max_recordsintegerNoAt most this many

airtable.create_record

Add a record to a table.

InputTypeRequiredWhat it is
base_idstringYesThe base's ID, starting app
tablestringYesThe table's name or ID
fieldsobjectYesThe record's fields by name

notion.search

Find pages and databases shared with the app.

InputTypeRequiredWhat it is
querystringNoWords in the title

dropbox.list_folder

List the files and folders in a folder.

InputTypeRequiredWhat it is
pathstringNoThe folder, e.g. /Clients/Acme. Leave empty for the top folder

dropbox.upload_file

Upload a file, replacing one already at that path.

InputTypeRequiredWhat it is
pathstringYesWhere to put it, including the file name, e.g. /Reports/october.csv
contentstringYesThe file's contents: text, or base64 when content_base64 is true
content_base64booleanNoWhether content is base64

dropbox.download_file

Download a file. Its contents come back as base64..

InputTypeRequiredWhat it is
pathstringYesThe file, e.g. /Reports/october.csv

stripe.list_customers

List customers, newest first.

InputTypeRequiredWhat it is
emailstringNoOnly customers with this email
limitintegerNoAt most this many (up to 100)

Dropbox has file actions too: dropbox.list_folder, dropbox.upload_file and dropbox.download_file. A download answers with "encoding": "base64", so decode data to get the file.

On this page