Home Docs Blog Demo

Available Extensions

Complete catalog of connectors, tools, and agents in the community registry.

The community registry ships with 16 production-ready extensions. All are Lua scripts that use the built-in host APIs — no external dependencies required.


Connectors

Connectors ingest data from external sources into your knowledge base. Add them to ctx.toml via ctx registry add, fill in credentials, and run ctx sync.

No authentication required

These connectors work immediately with public APIs:

rss

Ingest articles from any RSS 2.0 or Atom feed. Parses XML with Lua patterns — handles CDATA sections and HTML content.

[connectors.script.rss]
path = "~/.ctx/registries/community/connectors/rss/connector.lua"
feed_url = "https://blog.rust-lang.org/feed.xml"
max_items = "50"

Multiple feeds? Add separate instances:

[connectors.script.rss-rust-blog]
path = "~/.ctx/registries/community/connectors/rss/connector.lua"
feed_url = "https://blog.rust-lang.org/feed.xml"

[connectors.script.rss-company-blog]
path = "~/.ctx/registries/community/connectors/rss/connector.lua"
feed_url = "https://engineering.mycompany.com/feed"

stackoverflow

Ingest Q&A from any Stack Exchange site. Fetches questions with accepted answers.

[connectors.script.stackoverflow]
path = "~/.ctx/registries/community/connectors/stackoverflow/connector.lua"
tagged = "rust"
site = "stackoverflow"
sort = "votes"
per_page = "30"
max_pages = "3"

devto

Ingest articles from Dev.to by tag or author. Fetches full markdown body.

[connectors.script.devto]
path = "~/.ctx/registries/community/connectors/devto/connector.lua"
tag = "rust"
per_page = "30"
max_pages = "3"

hackernews

Ingest stories from Hacker News — top, best, new, ask, or show feeds.

[connectors.script.hackernews]
path = "~/.ctx/registries/community/connectors/hackernews/connector.lua"
feed = "top"
max_items = "30"
fetch_comments = "true"

github-discussions

Ingest discussions from a GitHub repository. Token is optional for public repos.

[connectors.script.github-discussions]
path = "~/.ctx/registries/community/connectors/github-discussions/connector.lua"
owner = "rust-lang"
repo = "rust"
token = "${GITHUB_TOKEN}"
max_items = "50"

Authentication required

These connectors need API tokens or credentials. Store secrets in environment variables using ${VAR} syntax.

jira

Ingest issues from Jira Cloud with full ADF-to-markdown conversion and comments.

[connectors.script.jira]
path = "~/.ctx/registries/community/connectors/jira/connector.lua"
url = "https://mycompany.atlassian.net"
email = "bot@company.com"
api_token = "${JIRA_API_TOKEN}"
project = "ENG"
max_results = "100"
include_comments = "true"

confluence

Ingest pages from a Confluence Cloud space with HTML-to-markdown conversion.

[connectors.script.confluence]
path = "~/.ctx/registries/community/connectors/confluence/connector.lua"
url = "https://mycompany.atlassian.net"
email = "bot@company.com"
api_token = "${CONFLUENCE_API_TOKEN}"
space_key = "ENG"
max_pages = "100"

notion

Ingest pages from a Notion database with recursive block-level content extraction.

[connectors.script.notion]
path = "~/.ctx/registries/community/connectors/notion/connector.lua"
api_token = "${NOTION_API_TOKEN}"
database_id = "abc123..."
page_size = "50"

Setup: Create an integration at notion.so/my-integrations, then share the database with it.

slack

Ingest message history from Slack channels with threaded conversation grouping.

[connectors.script.slack]
path = "~/.ctx/registries/community/connectors/slack/connector.lua"
bot_token = "${SLACK_BOT_TOKEN}"
channel = "C0123456789"
days_back = "30"
max_messages = "500"
include_threads = "true"

Setup: Create a Slack App, add channels:history, channels:read, users:read scopes, install to workspace, invite bot to channel.

linear

Ingest issues from Linear with comments and labels.

[connectors.script.linear]
path = "~/.ctx/registries/community/connectors/linear/connector.lua"
api_key = "${LINEAR_API_KEY}"
max_issues = "100"
include_comments = "true"

Tools

Tools are callable actions exposed via the MCP server. They auto-discover from registries — no config needed unless the tool requires credentials.

web-fetch

Fetch any URL and return clean extracted text. Strips HTML tags, scripts, and styles.

Parameters: url (required), max_length (default 10000)

# Auto-discovered — no config needed
# Agents can call it directly via MCP

create-jira-ticket

Create Jira tickets with optional knowledge-base enrichment. Searches the KB for related docs and appends them to the ticket description.

Parameters: title, body, project, issue_type, priority, labels, enrich

[tools.script.create-jira-ticket]
path = "~/.ctx/registries/community/tools/create-jira-ticket/tool.lua"
url = "https://mycompany.atlassian.net"
email = "bot@company.com"
api_token = "${JIRA_API_TOKEN}"

send-slack-message

Post messages to Slack channels with optional threading.

Parameters: channel (required), text (required), thread_ts

[tools.script.send-slack-message]
path = "~/.ctx/registries/community/tools/send-slack-message/tool.lua"
bot_token = "${SLACK_BOT_TOKEN}"

create-github-issue

Create issues in GitHub repositories with labels and assignees.

Parameters: owner, repo, title, body, labels, assignees

[tools.script.create-github-issue]
path = "~/.ctx/registries/community/tools/create-github-issue/tool.lua"
token = "${GITHUB_TOKEN}"

Agents

Agents are personas with system prompts and tool access. They auto-discover from registries.

researcher

A research agent that searches the knowledge base with multiple query strategies and synthesizes cited answers. Pre-loads relevant context based on the user’s topic.

Arguments: topic, depth (quick/standard/deep)

incident-responder

An incident response agent that surfaces relevant runbooks, past incidents, and architecture documentation. Categorizes search results into runbooks, past incidents, and architecture docs.

Arguments: incident (required), severity (sev1-sev4), service