Skip to content

Productivity

Google Sheets, Notion, Airtable, and Stripe integrations.

10 modules

ModuleDescription
Google Sheets ReadRead data from Google Sheets spreadsheet
Google Sheets WriteWrite data to Google Sheets spreadsheet
Notion Create PageCreate a new page in Notion database
Notion Query DatabaseQuery pages from Notion database with filters and sorting
Stripe Create PaymentCreate a payment intent with Stripe
Stripe Get CustomerRetrieve customer information from Stripe
Stripe List ChargesList recent charges from Stripe
Airtable Create RecordCreate a new record in Airtable table
Airtable Read RecordsRead records from Airtable table
Airtable Update RecordUpdate an existing record in Airtable table

Modules

Google Sheets Read

api.google_sheets.read

Read data from Google Sheets spreadsheet

Parameters:

NameTypeRequiredDefaultDescription
credentialsobjectNo-Google service account JSON credentials (defaults to env.GOOGLE_CREDENTIALS_JSON)
spreadsheet_idstringYes-Google Sheets spreadsheet ID (from URL)
rangestringYes-A1 notation range to read
include_headerbooleanNoTrueParse first row as column headers

Output:

FieldTypeDescription
valuesarrayParse first row as column headers
dataarrayArray of rows (each row is array of values)
row_countnumberArray of rows (each row is array of values)

Example: Read with headers

yaml
spreadsheet_id: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms
range: Sheet1!A1:D100
include_header: true

Google Sheets Write

api.google_sheets.write

Write data to Google Sheets spreadsheet

Parameters:

NameTypeRequiredDefaultDescription
credentialsobjectNo-Google service account JSON credentials (defaults to env.GOOGLE_CREDENTIALS_JSON)
spreadsheet_idstringYes-Google Sheets spreadsheet ID (from URL)
rangestringYes-Google Sheets spreadsheet ID (from URL)
valuesarrayYes-A1 notation range to write
value_input_optionstringNoUSER_ENTEREDHow to interpret input values

Output:

FieldTypeDescription
updated_rangestringRange that was updated
updated_rowsnumberRange that was updated
updated_columnsnumberRange that was updated
updated_cellsnumberNumber of rows updated

Example: Write data with headers

yaml
spreadsheet_id: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms
range: Sheet1!A1
values: [["Name", "Email", "Status"], ["John Doe", "john@example.com", "Active"], ["Jane Smith", "jane@example.com", "Active"]]

Notion Create Page

api.notion.create_page

Create a new page in Notion database

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Notion integration token (defaults to env.NOTION_API_KEY)
database_idstringYes-Notion database ID (32-char hex string)
propertiesobjectYes-Page properties (title, text, select, etc.)
contentarrayNo-Page properties (title, text, select, etc.)

Output:

FieldTypeDescription
page_idstringPage content as Notion blocks
urlstringPage content as Notion blocks
created_timestringCreated page ID

Example: Create task page

yaml
database_id: your_database_id
properties: {"Name": {"title": [{"text": {"content": "New Task"}}]}, "Status": {"select": {"name": "In Progress"}}, "Priority": {"select": {"name": "High"}}}

Notion Query Database

api.notion.query_database

Query pages from Notion database with filters and sorting

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Notion integration token (defaults to env.NOTION_API_KEY)
database_idstringYes-Notion database ID
filterobjectNo-Notion database ID
sortsarrayNo-Filter conditions for query
page_sizenumberNo100Sort order for results

Output:

FieldTypeDescription
resultsarrayNumber of results to return
countnumberArray of page objects
has_morebooleanArray of page objects

Example: Query all pages

yaml
database_id: your_database_id

Example: Query with filter

yaml
database_id: your_database_id
filter: {"property": "Status", "select": {"equals": "In Progress"}}
sorts: [{"property": "Created", "direction": "descending"}]

Stripe Create Payment

payment.stripe.create_payment

Create a payment intent with Stripe

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Stripe secret key (or use STRIPE_API_KEY env)
amountnumberYes-Stripe secret key (or use STRIPE_API_KEY env)
currencystringNousdAmount in cents (e.g. 1000 for $10.00)
descriptionstringNo-Three-letter currency code (e.g. usd, eur)
customerstringNo-Payment description

Output:

FieldTypeDescription
idstringStripe customer ID (optional)
amountnumberStripe customer ID (optional)
currencystringUnique identifier
statusstringPayment amount
client_secretstringCurrency code

Example: Create $50 payment

yaml
amount: 5000
currency: usd
description: Product purchase

Example: Create payment for customer

yaml
amount: 2999
currency: usd
customer: cus_XXXXXXXXXXXXXXX
description: Subscription payment

Stripe Get Customer

payment.stripe.get_customer

Retrieve customer information from Stripe

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Stripe secret key (or use STRIPE_API_KEY env)
customer_idstringYes-Stripe secret key (or use STRIPE_API_KEY env)

Output:

FieldTypeDescription
idstringUnique identifier
emailstringEmail address
namestringName of the item
creatednumberCreation timestamp
balancenumberAccount balance

Example: Get customer info

yaml
customer_id: cus_XXXXXXXXXXXXXXX

Stripe List Charges

payment.stripe.list_charges

List recent charges from Stripe

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Stripe secret key (or use STRIPE_API_KEY env)
limitnumberNo10Stripe secret key (or use STRIPE_API_KEY env)
customerstringNo-Filter by customer ID (optional)

Output:

FieldTypeDescription
chargesarrayThe charges
countnumberNumber of items
has_morebooleanThe has more

Example: List recent charges

yaml
limit: 20

Example: List customer charges

yaml
customer: cus_XXXXXXXXXXXXXXX
limit: 50

Airtable Create Record

productivity.airtable.create

Create a new record in Airtable table

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Airtable API key (or use AIRTABLE_API_KEY env)
base_idstringYes-Airtable API key (or use AIRTABLE_API_KEY env)
table_namestringYes-Airtable base ID
fieldsjsonYes-Name of the table

Output:

FieldTypeDescription
idstringUnique identifier
createdTimestringRecord creation timestamp
fieldsjsonThe fields

Example: Create customer record

yaml
base_id: appXXXXXXXXXXXXXX
table_name: Customers
fields: {"Name": "John Doe", "Email": "john@example.com", "Status": "Active"}

Example: Create task

yaml
base_id: appXXXXXXXXXXXXXX
table_name: Tasks
fields: {"Title": "Review PR", "Assignee": "Alice", "Priority": "High"}

Airtable Read Records

productivity.airtable.read

Read records from Airtable table

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Airtable API key (or use AIRTABLE_API_KEY env)
base_idstringYes-Airtable API key (or use AIRTABLE_API_KEY env)
table_namestringYes-Airtable base ID
viewstringNo-Name of the table
max_recordsnumberNo100View name to use (optional)

Output:

FieldTypeDescription
recordsarrayMaximum number of records to return
countnumberThe records

Example: Read all customers

yaml
base_id: appXXXXXXXXXXXXXX
table_name: Customers
max_records: 100

Example: Read from specific view

yaml
base_id: appXXXXXXXXXXXXXX
table_name: Tasks
view: Active Tasks
max_records: 50

Airtable Update Record

productivity.airtable.update

Update an existing record in Airtable table

Parameters:

NameTypeRequiredDefaultDescription
api_keystringNo-Airtable API key (or use AIRTABLE_API_KEY env)
base_idstringYes-Airtable API key (or use AIRTABLE_API_KEY env)
table_namestringYes-Airtable base ID
record_idstringYes-Name of the table
fieldsjsonYes-ID of the record to update

Output:

FieldTypeDescription
idstringUnique identifier
fieldsjsonThe fields

Example: Update customer status

yaml
base_id: appXXXXXXXXXXXXXX
table_name: Customers
record_id: recXXXXXXXXXXXXXX
fields: {"Status": "Inactive"}

Example: Update task

yaml
base_id: appXXXXXXXXXXXXXX
table_name: Tasks
record_id: recYYYYYYYYYYYYYY
fields: {"Status": "Completed", "Completed Date": "2024-01-15"}

Released under the Apache 2.0 License.