Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Orangeslice

FreeNot checked

B2B LinkedIn database prospector - 1.15B profiles, 85M companies

GitHubEmbed

About

B2B LinkedIn database prospector - 1.15B profiles, 85M companies

README

B2B LinkedIn database prospector. 1.15B profiles, 85M companies.

npx orangeslice

This installs documentation your AI agent needs to master the database. Point your agent (Claude Code, Cursor, etc.) to ./AGENTS.md and it becomes a B2B prospecting expert.

What It Does

Your AI agent gets:

  • Full database schema (40+ tables)
  • Query patterns and examples
  • Anti-patterns to avoid
  • Performance rules
  • Parallelization patterns — agents must run queries in parallel, never sequentially
  • AI structured output — extract structured data from text with orangeslice.ai.generateObject()

🚨 CRITICAL: Always Parallelize

The #1 rule: NEVER run queries sequentially. ALWAYS use Promise.all().

The API handles rate limiting automatically. Fire all queries at once.

// ❌ WRONG - Sequential (SLOW)
const company = await orangeslice.b2b.sql("...");
const funding = await orangeslice.b2b.sql("...");
const jobs = await orangeslice.b2b.sql("...");

// ✅ CORRECT - Parallel (FAST)
const [company, funding, jobs] = await Promise.all([
  orangeslice.b2b.sql("..."),
  orangeslice.b2b.sql("..."),
  orangeslice.b2b.sql("..."),
]);

Quick Example

import { orangeslice } from 'orangeslice';

// Research a company - ALL queries in parallel
const [company, funding, recentJobs, leadership] = await Promise.all([
  orangeslice.b2b.sql(`SELECT * FROM linkedin_company WHERE domain = 'stripe.com'`),
  orangeslice.b2b.sql(`SELECT * FROM linkedin_crunchbase_funding WHERE linkedin_company_id = 123`),
  orangeslice.b2b.sql(`SELECT * FROM linkedin_job WHERE linkedin_company_id = 123 LIMIT 10`),
  orangeslice.b2b.sql(`
    SELECT p.first_name, p.last_name, pos.title
    FROM linkedin_profile p
    JOIN linkedin_profile_position3 pos ON pos.linkedin_profile_id = p.id
    WHERE pos.linkedin_company_id = 123 AND pos.end_date IS NULL
    LIMIT 10
  `),
]);

// Research multiple companies - ALL in parallel
const domains = ['stripe.com', 'openai.com', 'anthropic.com'];
const companies = await Promise.all(
  domains.map(d => orangeslice.b2b.sql(`SELECT * FROM linkedin_company WHERE domain = '${d}'`))
);

Documentation

After running npx orangeslice, you get:

orangeslice-docs/
├── AGENTS.md              # Agent instructions (includes parallelization rules)
└── linkedin_data/
    ├── QUICK_REF.md       # START HERE - Critical rules & patterns
    ├── tables/            # Full schema (denormalized + normalized)
    └── search_examples/   # Query patterns for people & companies

Read linkedin_data/QUICK_REF.md before writing any queries.

Installation

npm install orangeslice

API

orangeslice.b2b.sql<T>(query: string): Promise<T>

Execute SQL and return rows. Always wrap multiple calls in Promise.all().

// Single query
const companies = await orangeslice.b2b.sql<Company[]>(
  "SELECT * FROM linkedin_company WHERE employee_count > 1000 LIMIT 10"
);

// Multiple queries - ALWAYS parallel
const [techCos, healthCos, financeCos] = await Promise.all([
  orangeslice.b2b.sql("SELECT * FROM linkedin_company WHERE industry_code = 4 LIMIT 10"),
  orangeslice.b2b.sql("SELECT * FROM linkedin_company WHERE industry_code = 14 LIMIT 10"),
  orangeslice.b2b.sql("SELECT * FROM linkedin_company WHERE industry_code = 43 LIMIT 10"),
]);

orangeslice.b2b.query<T>(query: string): Promise<QueryResult<T>>

Execute SQL and return full result with metadata.

const result = await orangeslice.b2b.query("SELECT * FROM linkedin_company LIMIT 10");
// result.rows, result.rowCount, result.duration_ms

orangeslice.b2b.configure(options)

Configure rate limiting. Default settings handle parallelization automatically.

orangeslice.b2b.configure({
  concurrency: 3,      // default: 2 concurrent requests
  minDelayMs: 200,     // default: 100ms between requests
});

orangeslice.ai.generateObject<T>(options): Promise<T>

Generate structured data from text using AI.

const result = await orangeslice.ai.generateObject({
  prompt: "Extract company info: Stripe was founded in 2010 by Patrick Collison",
  schema: {
    type: "object",
    properties: {
      company: { type: "string" },
      year: { type: "number" },
      founder: { type: "string" }
    },
    required: ["company", "year"]
  }
});
// { company: "Stripe", year: 2010, founder: "Patrick Collison" }

orangeslice.ai.extract<T>(text, schema, instructions?): Promise<T>

Convenience method to extract structured data from text.

const data = await orangeslice.ai.extract(
  "Apple Inc was founded in 1976 by Steve Jobs in Cupertino",
  { type: "object", properties: { company: { type: "string" }, year: { type: "number" } } },
  "Extract the company name and founding year"
);

Restrictions

  • No direct contact data (email/phone)
  • No Indeed job board data
  • No traffic/analytics data

from github.com/kishansripada/npx-orangeslice

Install Orangeslice in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install orangeslice

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add orangeslice -- npx -y orangeslice

FAQ

Is Orangeslice MCP free?

Yes, Orangeslice MCP is free — one-click install via Unyly at no cost.

Does Orangeslice need an API key?

No, Orangeslice runs without API keys or environment variables.

Is Orangeslice hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Orangeslice in Claude Desktop, Claude Code or Cursor?

Open Orangeslice on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Orangeslice with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All data MCPs