# MoltSets

```json
{
  "name": "MoltSets",
  "slug": "moltsets",
  "url": "https://composio.dev/toolkits/moltsets",
  "markdown_url": "https://composio.dev/toolkits/moltsets.md",
  "logo_url": "https://logos.composio.dev/api/moltsets",
  "categories": [
    "crm"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-10-28T05:34:13.441Z"
}
```

![MoltSets logo](https://logos.composio.dev/api/moltsets)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with MoltSets MCP or direct API to search people and companies, enrich profiles, discover emails and mobile numbers, and resolve advertising identities through natural language.

## Summary

MoltSets is a data platform for people and company search, enrichment, and identity resolution.
It helps teams discover accurate contact details and account usage data.

## Categories

- crm

## Toolkit Details

- Tools: 20

## Images

- Logo: https://logos.composio.dev/api/moltsets

## Authentication

- **Api Key**
  - Type: `api_key`
  - Description: Api Key authentication for MoltSets.
  - Setup:
    - Configure Api Key credentials for MoltSets.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Find mobile numbers for Acme decision makers
- Enrich this company profile with firmographic data
- Resolve advertising identities for recent website visitors

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `MOLTSETS_ENRICH_LINKEDIN_PROFILE` | Enrich LinkedIn Profile | Resolve a LinkedIn profile URL into a sparse full person and company profile, optionally including experience. A found result is billable against Enrichment Fair Use; found records consume tokens, misses do not, and every call counts as a request. Results can contain sensitive personal contact data and identity hashes; personal-email or SHA-256 fields may be omitted by plan restrictions while the lookup still succeeds. A status of not_found is a successful lookup miss. |
| `MOLTSETS_FIND_BEST_EMAIL_BY_LINKEDIN` | Find Best Email by LinkedIn | Find the best validated email for one LinkedIn profile or a batch of up to 100, preferring business email and falling back to sensitive personal email. Each item counts against Enrichment Fair Use; found records consume tokens and misses do not. HTTP 200 may represent not_found or a partial batch, so retry only items omitted from a partial response. |
| `MOLTSETS_FIND_BEST_US_PERSONAL_EMAIL_BY_LINKEDIN` | Find Best US Personal Email by LinkedIn | Find the highest-confidence validated sensitive personal email for one US LinkedIn profile or a batch of up to 100. Use this instead of the standard US personal-email selector when provider-ranked highest-confidence selection is required. This billable endpoint is capability-gated: first call GET_ACCOUNT and require personal_email_available=true, otherwise MoltSets returns 403 plan_restricted. Each item counts against Enrichment Fair Use; found records consume tokens and misses do not. Non-US profiles return HTTP 200 not_found. HTTP 200 may also contain a partial batch, so retry only omitted items. |
| `MOLTSETS_FIND_BUSINESS_EMAIL_BY_LINKEDIN` | Find Business Email by LinkedIn | Find a validated corporate email, without personal-email fallback, for one LinkedIn profile or a batch of up to 100. Each item counts against Enrichment Fair Use; found records consume tokens and misses do not. risk_score describes deliverability, not identity confidence. HTTP 200 may represent not_found or a partial batch, so retry only items omitted from a partial response. |
| `MOLTSETS_FIND_BUSINESS_EMAIL_BY_NAME` | Find Business Email by Name | Find a validated business email and matched LinkedIn URL from a person's name and company/domain. This is billed against Search Fair Use only when an email is found; every call still counts as a request. risk_score describes deliverability, not identity confidence, and a miss is HTTP 200 status=not_found. |
| `MOLTSETS_FIND_BUSINESS_PROFILE_BY_NAME` | Find Business Profile by Name | Find a sparse full person and company profile from a person's name and company or domain, optionally including experience. A matched result is billable against Search Fair Use and every call counts as a request. Results can contain sensitive personal contact data and identity hashes; personal-email or SHA-256 fields may be omitted by plan restrictions while the lookup still succeeds. A status of not_found is a successful lookup miss. |
| `MOLTSETS_FIND_COMPANY_BY_IP` | Find Company by IP | Resolve a B2B visitor IPv4 address to associated company domains and provider percentages. A found result is billable against Enrichment Fair Use; found records consume tokens, misses do not, and every call counts as a request. Consumer ISP addresses commonly return HTTP 200 status=not_found. Percentages are preserved as provider strings rather than interpreted as numeric confidence values. |
| `MOLTSETS_FIND_EMAIL_HASHES_BY_LINKEDIN` | Find Email Hashes by LinkedIn | Retrieve sensitive ad-audience match keys for one LinkedIn profile URL or slug: at most one business and one personal email hash in both SHA256 and MD5 formats. This endpoint does not return multiple hashes or accept batches. It costs one token when data is found; an HTTP 200 not_found costs no tokens but still counts as one Enrichment Fair Use request. The endpoint is unavailable on the $397/month and $997/month plans, which return 403 plan_restricted; retrying or adding tokens does not remove that plan restriction. |
| `MOLTSETS_FIND_LINKEDIN_BY_EMAIL` | Find LinkedIn by Email | Resolve one email address to the highest-confidence LinkedIn profile URL available from MoltSets. A found record consumes Enrichment Fair Use tokens; a miss consumes no tokens but every call counts as a request. A miss returns HTTP 200 with status=not_found. This lookup does not verify the email address. |
| `MOLTSETS_FIND_LINKEDIN_PROFILE` | Find LinkedIn Profile | Find matching person or company LinkedIn profiles from a person's name and company/domain. Set count_only=true for a non-fetching match count that consumes no records or tokens but still counts as a Search Fair Use request. Full results consume records and tokens only when found; not-found calls also count as requests. A miss is HTTP 200 status=not_found with an empty result list. |
| `MOLTSETS_FIND_MOBILE_ADVERTISING_ID_BY_EMAIL` | Find Mobile Advertising ID by Email | Resolve one email address to at most one highly sensitive Mobile Advertising ID (MAID), such as an Android AAID or Apple IDFA, for advertising audience matching and cross-device targeting. This Enrichment lookup is billable when found; misses cost no tokens but still count against the Fair Use request limit. The endpoint is unavailable on the $397 and $997 monthly plans: those plans receive 403 plan_restricted, and retrying or adding tokens does not remove the restriction. A miss returns HTTP 200 with status=not_found and empty or null results. Handle the returned advertising identifier as highly sensitive identity data and use it only with appropriate authorization and privacy controls. |
| `MOLTSETS_FIND_MOBILE_PHONE_BY_LINKEDIN` | Find Mobile Phone by LinkedIn | Find sensitive carrier-verified mobile data for one LinkedIn profile or a batch of up to 100. This requires a paid base plan and a separately billed phone-token subscription; first use GET_ACCOUNT to check phone_token_balance, phone_token_allowance, and phone_plan. Each returned number costs one phone token, while misses cost no phone token; insufficient balance can return 402 or an HTTP 200 partial batch, so retain completed results and retry only dropped items. Results are mobiles only, not landlines or VoIP, but they are not screened against Do Not Call registries. last_validated_at means active and in service on that date, not consent or permission to contact; the caller remains responsible for applicable calling, messaging, privacy, and DNC compliance. |
| `MOLTSETS_FIND_PERSONAL_EMAIL_HASH_BY_BUSINESS_EMAIL` | Find Personal Email Hash by Business Email | Convert one business email into one sensitive SHA-256-hashed personal-email match key for customer-match and paid-advertising audiences. Hashing does not make this identity data non-sensitive. The endpoint does not accept aliases or batches and never returns multiple hashes. A found result consumes Enrichment tokens; a miss costs no tokens but still counts against the Fair Use request limit and returns HTTP 200 with status=not_found. This endpoint is unavailable on the $397/month and $997/month plans: those plans receive 403 plan_restricted, which retrying or adding tokens does not clear. |
| `MOLTSETS_FIND_US_PERSONAL_EMAIL_BY_LINKEDIN` | Find US Personal Email by LinkedIn | Find a validated sensitive personal email for one US LinkedIn profile or a batch of up to 100. Use this standard selector when provider-ranked highest-confidence selection is not required; use FIND_BEST_US_PERSONAL_EMAIL_BY_LINKEDIN when it is. This billable endpoint is capability-gated: first call GET_ACCOUNT and continue only when personal_email_available is true; otherwise MoltSets returns 403 plan_restricted. Each profile counts against Enrichment Fair Use; found records consume tokens and misses do not. A non-US profile is an HTTP 200 not_found. HTTP 200 may also contain a partial batch, so retain completed results and retry only omitted items. |
| `MOLTSETS_GET_ACCOUNT` | Get Account | Safely read the connected MoltSets account, plan capabilities, token and phone-token balances, and live Fair Use headroom before paid or plan-restricted discovery. This read is free, consumes no tokens, is excluded from enrichment and search Fair Use, and can also verify the API key. |
| `MOLTSETS_GET_BILLING` | Get Billing | Get billing-sensitive plan and subscription dates, token balance, unlimited status, and per-tool token costs. This read-only request is free and excluded from enrichment and search Fair Use; use it to estimate provider token cost before billable discovery calls. |
| `MOLTSETS_GET_USAGE` | Get Usage | Get daily and aggregate API calls, tokens, found-data, no-data, and failed counts for today, week, month, or the billing cycle. This read is free and excluded from enrichment and search Fair Use; it exposes account usage but performs no mutation. |
| `MOLTSETS_REVERSE_LOOKUP_EMAIL` | Reverse Lookup Email | Resolve one email or a batch of up to 100 into a sensitive sparse person and business profile, including company firmographics, LinkedIn URLs, confirmed work email, and personal emails on file. Each address counts against Enrichment Fair Use; found records consume tokens and misses do not. HTTP 200 can represent not_found or a partial batch, so retry only omitted items. |
| `MOLTSETS_SEARCH_COMPANIES` | Search Companies | Search ranked companies by name or domain, firmographics, industry, and location. Returned records consume Search Fair Use records and tokens, while every call counts against the request limit; there is no free count-only mode. Returns one offset page. Free accounts can request at most 10 records per page; eligible paid plans can request up to 25. HTTP 200 status=not_found is a successful miss. |
| `MOLTSETS_SEARCH_PEOPLE` | Search People | Search ranked people and current companies with positive and exclusion filters. This is billable against Search Fair Use: returned records consume search records and tokens, every call counts as a request, exclusions apply before billing, and Free accounts can request at most 10 results per page (25 on eligible plans). Returns one offset page and treats status=not_found as a successful empty result. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to MoltSets
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["moltsets"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["moltsets"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run MoltSets tools with your agent

Send a request, execute the MoltSets tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "Find and enrich the profile for Jane Doe at Acme Corporation, including her work email and mobile number."}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "Find and enrich the profile for Jane Doe at Acme Corporation, including her work email and mobile number." }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to MoltSets and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["moltsets"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["moltsets"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a MoltSets request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to MoltSets tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("Find and enrich the profile for Jane Doe at Acme Corporation, including her work email and mobile number.")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "Find and enrich the profile for Jane Doe at Acme Corporation, including her work email and mobile number.",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native MoltSets Integration

- Supports both MoltSets MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable people, company, and identity searches
- Rich coverage for profile enrichment, contact discovery, and account usage queries

### 2. Managed Auth

- Securely store and use your MoltSets API key without exposing it to agents
- Central place to manage, scope, and revoke MoltSets access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access MoltSets
- Scoped, least privilege access to MoltSets resources
- Full audit trail of agent actions to support review and compliance

## Use MoltSets with any AI Agent Framework

Choose a framework you want to connect MoltSets with:

- [ChatGPT](https://composio.dev/toolkits/moltsets/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/moltsets/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/moltsets/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/moltsets/framework/atomic-agent)

## Related Toolkits

- [HubSpot](https://composio.dev/toolkits/hubspot) - HubSpot is an all-in-one marketing, sales, and customer service platform. It lets teams nurture leads, automate outreach, and track every customer interaction in one place.
- [Pipedrive](https://composio.dev/toolkits/pipedrive) - Pipedrive is a sales management platform offering pipeline visualization, lead tracking, and workflow automation. It helps sales teams keep deals moving forward efficiently and never miss a follow-up.
- [Salesforce](https://composio.dev/toolkits/salesforce) - Salesforce is a leading CRM platform that helps businesses manage sales, service, and marketing. It centralizes customer data, enabling teams to drive growth and build strong relationships.
- [Apollo](https://composio.dev/toolkits/apollo) - Apollo is a CRM and lead generation platform that helps businesses discover contacts and manage sales pipelines. Use it to streamline customer outreach and track your deals from one place.
- [Acculynx](https://composio.dev/toolkits/acculynx) - AccuLynx is a cloud-based roofing business management software for contractors. It streamlines project tracking, lead management, and document sharing.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Affinity](https://composio.dev/toolkits/affinity) - Affinity is a relationship intelligence CRM that helps private capital investors find, manage, and close more deals. It streamlines deal flow and surfaces key connections to help you win opportunities.
- [Agencyzoom](https://composio.dev/toolkits/agencyzoom) - AgencyZoom is a sales and performance platform built for P&C insurance agencies. It helps agents boost sales, retain clients, and analyze producer results in one place.
- [Agile CRM](https://composio.dev/toolkits/agile_crm) - Agile CRM is a unified customer management platform combining contacts, sales pipelines, marketing, and support. Use it to centralize customer data, automate campaigns, and manage deals and tickets in one place.
- [Bettercontact](https://composio.dev/toolkits/bettercontact) - Bettercontact is a smart contact enrichment tool for finding emails and phone numbers. It helps boost lead generation with automated, waterfall search across multiple sources.
- [Blackbaud](https://composio.dev/toolkits/blackbaud) - Blackbaud provides cloud-based software for nonprofits, schools, and healthcare institutions. It streamlines fundraising, donor management, and mission-driven operations.
- [Blitz API](https://composio.dev/toolkits/blitz_api) - Blitz API is a people, company, and job search API with contact and company enrichment. Use it to enrich leads and accelerate sales outreach with accurate contact and firmographic data.
- [Brilliant directories](https://composio.dev/toolkits/brilliant_directories) - Brilliant Directories is an all-in-one platform for building and managing online membership communities and business directories. It streamlines listings, member management, and engagement tools into a single, easy interface.
- [Capsule crm](https://composio.dev/toolkits/capsule_crm) - Capsule CRM is a user-friendly CRM platform for managing contacts and sales pipelines. It helps businesses organize relationships and streamline their sales process efficiently.
- [Centralstationcrm](https://composio.dev/toolkits/centralstationcrm) - CentralStationCRM is an easy-to-use CRM software focused on collaboration and long-term customer relationships. It helps teams manage contacts, deals, and communications all in one place.
- [Clarify MCP](https://composio.dev/toolkits/clarify_mcp) - Clarify MCP is a CRM platform for managing companies, people, deals, meetings, tasks, lists, and campaigns. Use it to centralize CRM data and streamline sales and marketing workflows.
- [Clay](https://composio.dev/toolkits/clay) - Clay is a go-to-market data enrichment and workflow automation platform for searching people and companies, running routines, and querying workspace tables. It helps teams enrich leads, automate GTM workflows, and keep workspace data synchronized.
- [Clay MCP](https://composio.dev/toolkits/clay_mcp) - Clay MCP is a prospect enrichment service for researching companies and contacts. It runs enrichment providers and Clay functions to return enriched prospect data.
- [Clientary](https://composio.dev/toolkits/clientary) - Clientary is a platform for managing clients, invoices, projects, proposals, and more. It streamlines client work and saves you serious admin time.
- [Close](https://composio.dev/toolkits/close) - Close is a CRM platform built for sales teams, combining calling, email automation, and predictive dialers. It streamlines sales workflows and boosts productivity with all-in-one communication tools.

## Frequently Asked Questions

### Do I need my own developer credentials to use MoltSets with Composio?

Yes, MoltSets requires you to configure your own API key. Once set up, Composio handles secure credential storage and API request handling for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
