npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@render-harness/cap-notion

v0.8.2

Published

Notion capability pack for the Render agent harness. Per-end-user OAuth via the harness's connections API; tools for pages, databases, and workspace search.

Downloads

317

Readme

@render-harness/cap-notion

Notion capability pack for the Render agent harness. Uses per-end-user OAuth via the harness's Connections API — each end user clicks "Connect Notion" in the operator UI, the harness stores their access token encrypted, and tools fetch it at call time.

Notion's public-integration OAuth flow returns long-lived access tokens with no refresh token. This pack relies on the refreshTokenOptional: true field on OAuthProviderConfig (added in @render-harness/[email protected]); refresh-on-use is a no-op. If Notion 401s on a tool call, the pack returns an actionable error telling the user to reconnect at /ui/connections.

Install

pnpm add @render-harness/cap-notion

Configure

capabilities:
  - pack: "@render-harness/cap-notion"
    config:
      accessMode: read_write   # or "read"

Env vars on the harness service:

NOTION_OAUTH_CLIENT_ID=...      # from your Notion integration's OAuth settings
NOTION_OAUTH_CLIENT_SECRET=...
CONNECTIONS_ENCRYPTION_KEY=...  # already required by the connections API

In your Notion integration (https://www.notion.so/profile/integrations):

  1. Set the integration type to Public.
  2. Add the redirect URI ${RENDER_EXTERNAL_URL}/connections/notion/callback.
  3. Copy the OAuth client id + secret into the env vars above.

End users granting access also need to share each page/database they want the integration to see, via Notion's "Add connections" menu on the page (••• top-right → "Add connections" → pick your integration). cap-notion surfaces an actionable restricted_resource error message when this hasn't happened.

Tools

8 tools in read_write mode, 3 tools in read mode (search, read_page, query_database):

| Tool | Mode | Description | |---|---|---| | notion.search | always | Workspace search by title. Returns id, type (page | database), parent. | | notion.read_page | always | Page metadata + top-level blocks flattened to markdown-like text. Block depth capped at 1. | | notion.create_page | read_write | Create page under a parent page OR database row. | | notion.append_blocks | read_write | Add blocks to an existing page. | | notion.update_page_properties | read_write | Patch properties / archive. | | notion.query_database | always | Filter + paginate database rows. Filter shape is a Notion-API passthrough. | | notion.create_database_row | read_write | Insert row. | | notion.update_database_row | read_write | Patch row properties. |

Config keys

| Key | Default | Notes | |---|---|---| | accessMode | "read_write" | "read" drops the four write tools. | | clientIdEnv | "NOTION_OAUTH_CLIENT_ID" | Override when the env var is named differently. | | clientSecretEnv | "NOTION_OAUTH_CLIENT_SECRET" | Same. |

Skills

| Skill | When the agent should load it | |---|---| | notion-pages | The user references a Notion page or asks you to write into Notion. | | notion-databases | The user wants to read/write structured rows backed by a Notion database. |

Loaded on demand via load_skill — not in every system prompt by default.

Versioning

First release at 0.6.0 matching the family minor. See docs/AGENTS.md for the family-wide versioning model.