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

open-sdr

v0.5.1

Published

<img src="images/opensdr-wordmark.png" alt="Open-SDR Logo" width="500"/>

Readme

OpenSDR helps you research companies and find people on LinkedIn, automating the tedious aspects of lead generation.

Getting Started

OpenSDR is a commandline tool you'll run from Terminal and you need to install it with npm.

Note: these instructions are for Mac OSX. OpenSDR should work on non-Mac systems but you'll need to adapt the instructions.

0. Dependencies

In a Terminal, run:

npm -v

If this prints a number like 10.8.2, you're good to go! If not, you need to download and install Node.js

1. Install OpenSDR

npm install -g open-sdr

2. Login to LinkedIn

sdr login

This will open LinkedIn in a browser for you to login. Open-SDR will use this browser session for its operations.

3. Set up API keys:

Create a .env file with your API keys and run sdr in the same directory. In Terminal cd ~ will move you to your home directory, something like /Users/matt.

FIRECRAWL_API_KEY=<your key>            (for research)
GOOGLE_GENERATIVE_AI_API_KEY=<your key> (for processing and scraping)
ANTHROPIC_API_KEY=<your key>            (for the primary agent loop)
RIME_API_KEY=<>                         (for TTS to notify of progress, optional, disable in mcp.ts)

How to use OpenSDR

OpenSDR can be used in 2 ways:

  • sdr agent <promptFilePath> - A stand-alone agent via commandline interface (CLI) that is an MCP client. You provide the agent a task like researching a list of companies and it gets to work.
  • sdr server - An MCP server that gives tools for research and lead generation to other MCP clients like Claude Desktop.

Available Tool Commands

All of the tools OpenSDR agent has are available via sdr tools <command>. You can provide these tools to another MCP client using sdr server.

findLinkedinConnectionsAt: Find first or second-degree connections at a specific company

sdr tools findLinkedinConnectionsAt --companyName="Company Name" --degree="first|second"

findProfile: Find a LinkedIn profile by name, optionally filtered by company

sdr tools findProfile --personName="Person Name" [--companyName="Company Name"]

findMutualConnections: Find mutual connections with a person on LinkedIn

sdr tools findMutualConnections --personName="Person Name" [--companyName="Company Name"]

draftMessage: Open browser to draft a message to a LinkedIn connection

sdr tools draftMessage --profileUrl="https://linkedin.com/in/profile" --message="Your message"

researchCompany: Gather comprehensive background information about a company

sdr tools researchCompany --companyName="Company Name" [--companyContext="They are an AI startup"] [--peopleGuidance="Focus on engineers"]

deepResearch: Perform deep research on a topic using Firecrawl

sdr tools deepResearch --query="Research topic" [--maxDepth=5] [--timeLimit=180] [--maxUrls=15]

runAgentOnEachCompany: Run the SDR agent for each company mentioned in a prompt

sdr tools runAgentOnEachCompany --prompt="Your prompt with multiple companies"

writeSdrNotes: Write markdown content to a file in the SDR notes directory

sdr tools writeSdrNotes --content="Markdown content" [--filename="notes"] [--subdirectory="research"]

Standalone Agent

Open-SDR provides several command-line tools:

sdr tools <command> # Run specific tools directly
sdr agent <promptFile>  # Run an agent with a prompt file

There are sample prompts in the sample_prompts directory.

Agent Architecture

The OpenSDR agent will operate in a single context and can spawn sub-agents per company to ensure comprehensive research and efficient use of context.

MCP Client

The standalone agent is an MCP which means it can integrate tons of other capabilities. See PulseMCP to find example servers.

This is configurable from src/mcp.ts by updating the mcpCommands. EnvVars will be read from .env and your local environment.

By default the agent comes with Rime installed for text-to-speech to notify of progress but this can be disabled.

Potential Integrations ideas

Open-SDR could be extended to work with:

  • Apollo: Add email enrichment
  • Notion: Store and organize research findings
  • Slack: Share briefings and research summaries

MCP Server

Open-SDR implements the Model Context Protocol (MCP) server, allowing you to use its tools with compatible AI systems.

To start the server:

sdr server

This will output an MCP config JSON object you can use to configure an MCP client.

Claude Desktop is a great MCP client to get started with. This will allow you to make requests of OpenSDR like any other LLM tool without using the terminal.

Note taking

By default OpenSDR will takes notes to a sub-directory ./sdr_notes from whereever you run it. You can prompt it not to take notes of course.

How does it work?

OpenSDR accesses Linkedin using Puppeteer to manage a browser that the user logs into.

Research capabilities are provided by Firecrawl

Built with Ref

Built with ref.tools

License

MPL 2.0