NAV Navigation
cURL Python JavaScript

NinjaPear Overview

NinjaPear is a data platform that seeks to serve as the single source of truth for B2B data, be it to power your data-driven applications or your sales-driven workflow. Our goal is to be the de-facto data platform where businesses and professionals congregate and provide first-hand data updates, in exchange for professional perks, enabling us to be a sustainable platform for ethical and legitimate data services for the rest of the data tech world.

As of today, as a data client of NinjaPear API, you can:

  1. Look up the customers, investors, and partners/platforms of any business globally.
  2. (FREE TOOL) Retrieve the logo of any company.
  3. (FREE TOOL) Find out the nature of an email address.

Authentication

curl "https://nubela.co/api/v1/customer/listing" \
  -H "Authorization: Bearer YOUR_API_KEY"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CustomerAPIApi(api_client)
    response = api.get_customer_listing(website="https://example.com")
var NinjaPear = require('ninjapear');
var defaultClient = NinjaPear.ApiClient.instance;
var bearerAuth = defaultClient.authentications['bearerAuth'];
bearerAuth.accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CustomerAPIApi();
api.getCustomerListing("https://example.com").then(function(data) {
  console.log(data);
});

NinjaPear's API uses bearer tokens to authenticate users. Each user is assigned a randomly generated secret key under the API section in the dashboard.

The bearer token is injected in the Authorization header.

Client Libraries

We provide official client libraries for JavaScript and Python to make integrating with the NinjaPear API easier.

JavaScript (Node.js)

npm install ninjapear
# JavaScript library - see JavaScript tab
var NinjaPear = require('ninjapear');
var defaultClient = NinjaPear.ApiClient.instance;
var bearerAuth = defaultClient.authentications['bearerAuth'];
bearerAuth.accessToken = "YOUR_API_KEY";

// Now you can use any API class
var companyApi = new NinjaPear.CompanyAPIApi();
var customerApi = new NinjaPear.CustomerAPIApi();
var contactApi = new NinjaPear.ContactAPIApi();
var metaApi = new NinjaPear.MetaAPIApi();

Python

uv add ninjapear
# or: pip install ninjapear
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

# Use the client with a context manager
with ninjapear.ApiClient(configuration) as api_client:
    company_api = ninjapear.CompanyAPIApi(api_client)
    customer_api = ninjapear.CustomerAPIApi(api_client)
    contact_api = ninjapear.ContactAPIApi(api_client)
    meta_api = ninjapear.MetaAPIApi(api_client)
// Python library - see Python tab

Rate limit

You can make up to 300 requests to our API every minute. The window for the rate limit is 5 minutes. This means you can burst up to 1500 requests every 5 minutes.

At periods of high load, our system might tighten rate limits for all accounts to ensure that our services remain accessible for all users.

We return a status code of error 429 when you are rate limited. You can also get a status code error of 429 if the capacity on our end limits us.

You should handle 429 errors and apply exponential backoff.

Accounts on trial (that is before any top ups have been made) are limited to 2 requests every minute. You get the normal rate limit upon making at least one credit top-up.

Rate limit for Free APIs

To sustainably provide free APIs, rate limit for free APIs depends on your subscription plan:

Credits

Each valid request requires at least 0.1 credit to be processed, unless it is a free API endpoint.

A credit is consumed if and only if the request is parsed successfully.

A successful request is a request that returns with a 200 HTTP status code.

Timeouts and API response time

NinjaPear API endpoints take 30-60 seconds to complete.

You are encouraged to make concurrent requests to our API service to maximize throughput. See this post on how you can maximise throughput.

We recommend a timeout of 100 seconds.

Errors

These are the common errors that could be returned by our API:

HTTP Code Charge? Description
400 No Invalid parameters provided. Refer to the documentation and message body for more info
401 No Invalid API Key
403 No You have run out of credits
404 Yes The requested resource (e.g., user profile, company) could not be found
410 No This API is deprecated
429 No Rate limited. Please retry
500 No There is an error with our API. Please Contact us for assistance
503 No Enrichment failed, please retry.

You will never be charged for failed requests.

Backward Compatibility Guarantee

We are committed to ensuring that our API remains backward compatible, allowing you to integrate with confidence. Our backward compatibility guarantee means that we will not introduce changes that break existing functionality or remove endpoints without a deprecation period.

To be specific, we will not introduce breaking changes in the following ways:

  1. We will not remove documented parameters and response attributes.
  2. We will not change the data type as documented in our API responses.

However, the following are not considered breaking changes:

We highly recommend integrating our API in a way that would not break should new response attributes or headers be introduced.

If we make changes to our API, we will provide clear documentation and sufficient notice (30 days) to ensure a seamless transition. Notices will be shared via newsletter emails, Twitter/X posts and updates to our blog.

Customer API

Customer Listing Endpoint

GET /api/v1/customer/listing

Cost: 1 credit / request + 2 credit / company returned. Credits are charged even when the request returns an empty result.

Get a list of highly-probable customers, investors, and partners/platforms of a target company, categorized by relationship type.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/customer/listing"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CustomerAPIApi(api_client)
    response = api.get_customer_listing(website="https://www.stripe.com")
    print(response)
var NinjaPear = require('ninjapear');
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications['bearerAuth'].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CustomerAPIApi();
api.getCustomerListing("https://www.stripe.com").then(function(data) {
  console.log(data);
});

Example response:

{
  "customers": [
    {
      "name": "Apple",
      "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",
      "tagline": "Think different.",
      "website": "https://www.apple.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com",
      "id": "abc123",
      "industry": 45202030,
      "specialties": ["Technology", "Consumer Electronics"],
      "x_profile": "https://x.com/Apple"
    }
  ],
  "investors": [
    {
      "name": "Sequoia Capital",
      "description": "Sequoia Capital is a venture capital firm focused on technology companies.",
      "tagline": null,
      "website": "https://www.sequoiacap.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.sequoiacap.com",
      "id": "def456",
      "industry": 40203010,
      "specialties": ["Venture Capital", "Growth Equity"],
      "x_profile": "https://x.com/sequoia"
    }
  ],
  "partner_platforms": [
    {
      "name": "Amazon Web Services",
      "description": "Amazon Web Services provides cloud computing platforms and APIs.",
      "tagline": null,
      "website": "https://aws.amazon.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Faws.amazon.com",
      "id": "ghi789",
      "industry": 45101010,
      "specialties": ["Cloud Computing", "Infrastructure"],
      "x_profile": "https://x.com/awscloud"
    }
  ],
  "next_page": "https://nubela.co/api/v1/customer/listing?website=https://www.stripe.com&cursor=abc123"
}

URL Parameters

Parameter Required Description Example
website Yes The website URL of the target company https://www.stripe.com
cursor No Pagination cursor from next_page in a previous response abc123
page_size No Number of results per page (1-200, default 200) 50
quality_filter No Filter out low-quality results (junk TLDs like .top, .xyz and unreachable websites). Set to false to include all results. (default: true) false

Response

Key Description Example
customers A list of companies that are probable customers of the target company. Entities that pay for the target's product/service. List of CustomerCompany objects
investors A list of companies that are investors (VC firms, PE funds, angel networks) of the target company. List of CustomerCompany objects
partner_platforms A list of companies that are partners, platforms, or service providers the target company uses or integrates with (tech stack, media, agencies). List of CustomerCompany objects
next_page The API URI that serves as the cursor for pagination. Following this URL with your API key will lead to the next page of results. This will be null for the final page. https://nubela.co/api/v1/customer/list?...

Error Codes

Status Code Charged? Description
400 No Unable to extract enough information about the target company

CustomerCompany

Key Description Example
name Company name "Apple"
description A brief description of the company "Apple Inc. designs, manufactures, and markets smartphones..."
tagline Company tagline or slogan "Think different."
website Company website URL "https://www.apple.com"
company_logo_url URL to the Company Logo API for this company. Powered by Company Logo Endpoint. Authenticate with your bearer token. null if no website. "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com"
id Unique identifier "abc123"
industry GICS 8-digit industry code 45202030
specialties List of company specialties ["Technology"]
x_profile X (Twitter) profile URL "https://x.com/Apple"

Note on company_logo_url: This URL is powered by the Company Logo Endpoint. Authenticate with your Bearer token (same as the main API). These are temporal links — the recommended approach is to download the image via the URL as soon as the response is returned and host the image on your end.

Response Headers

Header Key Description Example
X-NinjaPear-Credit-Cost Total cost of credits for this API call 10

Company API

Company Logo Endpoint

GET /api/v1/company/logo

Cost: 0 credit / successful request. (FREE)

Retrieve the logo of a company given its website URL. Returns the logo as a PNG image (128x128).

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/logo" \
  --output logo.png
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    logo_data = api.get_company_logo(website="https://www.stripe.com")

    # Save the logo image
    with open("logo.png", "wb") as f:
        f.write(logo_data)
var NinjaPear = require('ninjapear');
var fs = require('fs');
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications['bearerAuth'].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyLogo("https://www.stripe.com").then(function(data) {
  // Save the logo image
  fs.writeFileSync("logo.png", Buffer.from(data));
});

Example response:

Company Logo Example

A raw PNG image binary (Content-Type: image/png).

URL Parameters

Parameter Required Description Example
website Yes The website URL of the target company https://www.stripe.com

Response

A 200 response returns the logo as a raw PNG image with Content-Type: image/png.

Error Codes

Status Code Charged? Description
404 No No logo found for the given domain

Response Headers

Header Key Description Example
X-NinjaPear-Credit-Cost Total cost of credits for this API call 0

Company Details Endpoint

GET /api/v1/company/details

Cost: 2 credits / request (base). Add 2 credits when include_employee_count=true (total: 4 credits). Credits are charged even if no data found.

Retrieve the details of a company given its website URL. Returns company metadata including description, industry, social media URLs, and more.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/details"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    details = api.get_company_details(website="https://www.stripe.com")
    print(details)
var NinjaPear = require('ninjapear');
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications['bearerAuth'].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyDetails("https://www.stripe.com").then(function(data) {
  console.log(data);
});

Example response (private company):

{
  "websites": [
    "https://stripe.com",
    "https://stripe.dev"
  ],
  "description": "Stripe is a technology company that builds economic infrastructure for the internet.",
  "industry": 45102010,
  "company_type": "PRIVATELY_HELD",
  "founded_year": 2010,
  "specialties": ["Payments", "Financial Services", "APIs"],
  "name": "Stripe",
  "tagline": "Financial infrastructure for the internet",
  "logo_url": "https://nubela.co/api/v1/company/logo?website=https://stripe.com",
  "cover_pic_url": "https://example.com/stripe-cover.png",
  "facebook_url": "https://facebook.com/stripe",
  "twitter_url": "https://twitter.com/stripe",
  "instagram_url": null,
  "employee_count": 8000,
  "addresses": [
    {
      "address_type": "HEADQUARTERS",
      "line1": "354 Oyster Point Blvd",
      "line2": null,
      "city": "South San Francisco",
      "state": "CA",
      "postal_code": "94080",
      "country_code": "US",
      "country": "United States",
      "is_primary": true
    }
  ],
  "executives": [
    {
      "name": "Patrick Collison",
      "title": "Chief Executive Officer",
      "role": "CEO"
    }
  ],
  "public_listing": null
}

Example response (public company):

{
  "websites": ["https://apple.com"],
  "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",
  "industry": 45202030,
  "company_type": "PUBLIC_COMPANY",
  "founded_year": 1976,
  "specialties": ["Consumer Electronics", "Software", "Services"],
  "name": "Apple",
  "tagline": "Think different",
  "logo_url": "https://nubela.co/api/v1/company/logo?website=https://apple.com",
  "cover_pic_url": "https://example.com/apple-cover.png",
  "facebook_url": "https://facebook.com/apple",
  "twitter_url": "https://twitter.com/apple",
  "instagram_url": "https://instagram.com/apple",
  "employee_count": 164000,
  "addresses": [
    {
      "address_type": "HEADQUARTERS",
      "line1": "One Apple Park Way",
      "line2": null,
      "city": "Cupertino",
      "state": "CA",
      "postal_code": "95014",
      "country_code": "US",
      "country": "United States",
      "is_primary": true
    }
  ],
  "executives": [
    {
      "name": "Tim Cook",
      "title": "Chief Executive Officer",
      "role": "CEO"
    }
  ],
  "public_listing": {
    "stock_symbol": "AAPL",
    "ipo_date": "1980-12-12",
    "isin": "US0378331005",
    "figi": "BBG000B9XRY4",
    "cusip": "037833100",
    "lei": "HWUPKR0MPOU8FGXBT394",
    "cik": "0000320193",
    "sic_code": "3571",
    "revenue_usd": 383285000000,
    "revenue_captured_at": "2024-09-28",
    "ebitda_usd": 134000000000,
    "ebitda_captured_at": "2024-09-28"
  }
}

URL Parameters

Parameter Required Description Example
website Yes The website URL of the target company https://www.stripe.com
include_employee_count No Fetch fresh employee count data via web search. Adds 2 credits to the request cost. true

Response

Key Description Example
websites List of all company website URLs ["https://stripe.com", "https://stripe.dev"]
description A brief description of the company "Stripe is a technology company..."
industry GICS 8-digit industry code 45102010
company_type Type of company (PUBLIC_COMPANY, PRIVATELY_HELD, GOVERNMENT_AGENCY, NON_PROFIT, EDUCATIONAL, PARTNERSHIP, SELF_EMPLOYED, SELF_OWNED) "PRIVATELY_HELD"
founded_year Year the company was founded 2010
specialties List of company specialties ["Payments", "Financial Services"]
name Company name "Stripe"
tagline Company tagline or slogan "Financial infrastructure for the internet"
logo_url URL to the company logo endpoint. Authenticate with your API key bearer token. "https://nubela.co/api/v1/company/logo?website=https://stripe.com"
cover_pic_url URL to the company's cover/banner image "https://example.com/cover.png"
facebook_url Facebook profile URL "https://facebook.com/stripe"
twitter_url Twitter/X profile URL "https://twitter.com/stripe"
instagram_url Instagram profile URL null
employee_count Estimated number of employees 8000
employee_count_range_min Lower bound of employee count range. Only present when include_employee_count=true. 7500
employee_count_range_max Upper bound of employee count range. Only present when include_employee_count=true. 8500
addresses List of company addresses [Address Object]
executives List of company executives and board members [Executive Object]
public_listing Public company data including stock info and financials. null for private companies. PublicListing Object

Address Object

Key Description Example
address_type Type of address (HEADQUARTERS, REGISTERED, BRANCH, MAILING, OTHER) "HEADQUARTERS"
line1 Street address line 1 "354 Oyster Point Blvd"
line2 Street address line 2 null
city City name "South San Francisco"
state State, province, or region "CA"
postal_code Postal/ZIP code "94080"
country_code ISO 3166-1 alpha-2 country code "US"
country Full country name "United States"
is_primary Whether this is the primary address true

Executive Object

Key Description Example
name Full name of the executive "Patrick Collison"
title Job title "Chief Executive Officer"
role Normalized role type (CEO, CFO, COO, CTO, CMO, PRESIDENT, VICE_PRESIDENT, DIRECTOR, BOARD_MEMBER, CHAIRMAN, FOUNDER, OTHER) "CEO"

PublicListing Object

This object is only present (non-null) for public companies. For private companies, public_listing will be null.

Key Description Example
stock_symbol Stock ticker symbol "AAPL"
ipo_date IPO date in ISO format "1980-12-12"
isin International Securities Identification Number "US0378331005"
figi Financial Instrument Global Identifier "BBG000B9XRY4"
cusip CUSIP identifier "037833100"
lei Legal Entity Identifier "HWUPKR0MPOU8FGXBT394"
cik SEC Central Index Key "0000320193"
sic_code SEC Standard Industrial Classification code "3571"
revenue_usd Annual revenue in USD 383285000000
revenue_captured_at Date when revenue data was captured (ISO format) "2024-09-28"
ebitda_usd EBITDA in USD 134000000000
ebitda_captured_at Date when EBITDA data was captured (ISO format) "2024-09-28"

Response Headers

Header Key Description Example
X-NinjaPear-Credit-Cost Total cost of credits for this API call 2

Error Codes

Status Code Charged? Description
400 No Website is unreachable
404 Yes No company data could be extracted from the website

Employee Count Endpoint

GET /api/v1/company/employee-count

Cost: 2 credits / successful request.

Retrieve the employee count range for a company given its website URL.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/employee-count"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    response = api.get_employee_count(website="https://www.stripe.com")
    print(response)
var NinjaPear = require('ninjapear');
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications['bearerAuth'].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getEmployeeCount("https://www.stripe.com").then(function(data) {
  console.log(data);
});

Example response:

{
  "employee_count": 3500
}

URL Parameters

Parameter Required Description Example
website Yes The website URL of the target company https://www.stripe.com

Response

Key Description Example
employee_count Estimated employee count 3500

Response Headers

Header Key Description Example
X-NinjaPear-Credit-Cost Total cost of credits for this API call 2

Error Codes

Status Code Charged? Description
404 No No employee count data found for the given website

Meta API

View Credit Balance Endpoint

GET /api/v1/meta/credit-balance

Cost: 0 credit / successful request.

Get your current credit balance.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/meta/credit-balance"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.MetaAPIApi(api_client)
    response = api.get_credit_balance()
    print(response)
var NinjaPear = require('ninjapear');
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications['bearerAuth'].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.MetaAPIApi();
api.getCreditBalance().then(function(data) {
  console.log(data);
});

Example response:

{
  "credit_balance": 100000
}

Response

Key Description Example
credit_balance Your current credit balance 100000

Response Headers

Header Key Description Example
X-NinjaPear-Credit-Cost Total cost of credits for this API call 0

Error Codes

Status Code Charged? Description
401 No Invalid API key

Contact API

Disposable Email Checker Endpoint

GET /api/v1/contact/disposable-email

Cost: 0 credit / successful request. (FREE)

Check if an email address is a disposable (temporary/throwaway) email or a free email provider.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "[email protected]" \
  "https://nubela.co/api/v1/contact/disposable-email"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.ContactAPIApi(api_client)
    response = api.check_disposable_email(email="[email protected]")
    print(response)
var NinjaPear = require('ninjapear');
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications['bearerAuth'].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.ContactAPIApi();
api.checkDisposableEmail("[email protected]").then(function(data) {
  console.log(data);
});

Example response:

{
  "email": "[email protected]",
  "is_disposable_email": true,
  "is_free_email": false
}

URL Parameters

Parameter Required Description Example
email Yes The email address to check [email protected]

Response

Key Description Example
email The email address that was checked "[email protected]"
is_disposable_email Whether the email domain is a known disposable/temporary email provider true
is_free_email Whether the email domain is a free email provider (e.g., gmail.com, yahoo.com) false

Response Headers

Header Key Description Example
X-NinjaPear-Credit-Cost Total cost of credits for this API call 0

Error Codes

Status Code Charged? Description
400 No Invalid email format

Claude AI

NinjaPear provides an MCP (Model Context Protocol) server for direct integration with Claude. This allows you to query B2B company data conversationally — ask Claude about any company's customers, investors, employee count, and more.

Quick Start

  1. Get your connector string from the Dashboard
  2. Add NinjaPear as a connector in Claude (see setup instructions below)
  3. Start a new conversation and query B2B company data conversationally

Setup

Your connector string is available on the Dashboard. It looks like: https://nubela.co/mcp/sse?api_key=YOUR_API_KEY

  1. Get your connector string from the Dashboard
  2. Make sure you're logged into Claude, then visit: Add Custom Connector
  3. Enter the following:
    • Name: NinjaPear
    • Remote MCP server URL: Paste your connector string from step 1
  4. Click Add connector
  5. Start a new conversation and ask Claude to use NinjaPear

Claude Code CLI

Get your connector string from the Dashboard, then run:

claude mcp add ninjapear --transport sse "YOUR_CONNECTOR_STRING"

Available Tools

Tool Description Cost
get_customer_listing Get customers, investors, and partners of a company 1 + 2/company
get_company_details Get company info, executives, financials 2-4 credits
get_employee_count Get employee count for a company 2 credits
check_disposable_email Check if email is disposable/free FREE
get_credit_balance Check your credit balance FREE
get_company_logo_url Get company logo URL FREE

Example Prompts

Once connected, you can ask Claude questions like:

Customer Intelligence

Company Research

Employee Insights

Email Validation

Account Management

Company Branding

Complex Queries

Error Handling

Errors are returned as descriptive messages that Claude will explain to you:

Error Message
Invalid API key "Error: 401 Unauthorized"
Insufficient credits "Error: 402 Payment Required"
Rate limited "Error: 429 Too Many Requests"
Server error "Error: 500 Internal Server Error"

Technical Details

MCP Protocol

The NinjaPear MCP server implements the Model Context Protocol specification, which is Anthropic's open standard for connecting AI assistants to external data sources and tools.

Transport

We use Server-Sent Events (SSE) transport for real-time communication:

Authentication

Pass your API key via the api_key query parameter or the X-API-Key header