← Files OnsaARCHIVED FILE
.codex-plugin/plugin.json
10.9 KB · Nov 3, 2026 · 06:12 UTC
{
"name": "app-6a9facd4ab6481919a2b14c37ab017cd",
"version": "2.1.0",
"description": "Onsa finds real B2B prospects \u2013 actual people with LinkedIn profiles \u2013 scored against your ideal-customer profile, and keeps every search as a campaign you can come back to.\n\nNot sure who to target? Onsa works out an ideal-customer profile with you from evidence \u2013 the closed deals in a CRM you have connected to ChatGPT, if you allow it, and the replies your Onsa campaigns got \u2013 marking which parts are measured and which are guesses, before any search spends your allowance. Describe who you want to reach and Onsa's agent runs a live search, returning each person with their position, company, a 1\u20135 score and the written reasoning behind that score. In ChatGPT's Work mode, where MCP events are available, the search reports back to your chat on its own: you hear when the first leads are ready and when the agent posts its report. Elsewhere, Onsa tells the assistant when to check again. Every search becomes a campaign, so you can grow it, steer it toward a different segment, or compare it against earlier ones to see which profile actually produced replies.\n\nOnsa also reviews the outreach side. It returns what prospects wrote back \u2013 the actual text, not just counts \u2013 alongside the funnel: invites sent, invites accepted, messages sent, and replies split by sentiment. When a draft reads like a mail-merge, pull up Onsa's research memo on that person, where one exists, and rewrite the message around one specific, checkable fact. You can also share a shortlist of chosen leads as a read-only link that expires after 30 days, and revoke it at any time.\n\nOnsa can queue an approved message to a prospect on LinkedIn, one person at a time: every message sent from this chat needs your explicit confirmation of that exact text and recipient. Where ChatGPT cannot show a confirmation form, Onsa gives you a link to approve it in the Onsa web app. Queued messages go out on Onsa's own schedule, within daily pacing limits. Connecting LinkedIn, setting up a campaign's outreach and its auto-approve setting all happen in the Onsa web app.\n\nRequires an Onsa account. Everything already in a workspace \u2013 its campaigns, leads and replies \u2013 stays readable here.",
"author": {
"name": "onsa.ai",
"url": "https://onsa.ai"
},
"homepage": "https://onsa.ai/mcp",
"keywords": [
"sales",
"lead generation",
"prospecting",
"B2B",
"outreach review"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Onsa",
"shortDescription": "Find and qualify B2B leads",
"longDescription": "Onsa finds real B2B prospects \u2013 actual people with LinkedIn profiles \u2013 scored against your ideal-customer profile, and keeps every search as a campaign you can come back to.\n\nNot sure who to target? Onsa works out an ideal-customer profile with you from evidence \u2013 the closed deals in a CRM you have connected to ChatGPT, if you allow it, and the replies your Onsa campaigns got \u2013 marking which parts are measured and which are guesses, before any search spends your allowance. Describe who you want to reach and Onsa's agent runs a live search, returning each person with their position, company, a 1\u20135 score and the written reasoning behind that score. In ChatGPT's Work mode, where MCP events are available, the search reports back to your chat on its own: you hear when the first leads are ready and when the agent posts its report. Elsewhere, Onsa tells the assistant when to check again. Every search becomes a campaign, so you can grow it, steer it toward a different segment, or compare it against earlier ones to see which profile actually produced replies.\n\nOnsa also reviews the outreach side. It returns what prospects wrote back \u2013 the actual text, not just counts \u2013 alongside the funnel: invites sent, invites accepted, messages sent, and replies split by sentiment. When a draft reads like a mail-merge, pull up Onsa's research memo on that person, where one exists, and rewrite the message around one specific, checkable fact. You can also share a shortlist of chosen leads as a read-only link that expires after 30 days, and revoke it at any time.\n\nOnsa can queue an approved message to a prospect on LinkedIn, one person at a time: every message sent from this chat needs your explicit confirmation of that exact text and recipient. Where ChatGPT cannot show a confirmation form, Onsa gives you a link to approve it in the Onsa web app. Queued messages go out on Onsa's own schedule, within daily pacing limits. Connecting LinkedIn, setting up a campaign's outreach and its auto-approve setting all happen in the Onsa web app.\n\nRequires an Onsa account. Everything already in a workspace \u2013 its campaigns, leads and replies \u2013 stays readable here.",
"developerName": "onsa.ai",
"category": "Business & Operations",
"capabilities": [
"Build an ICP from past deals or a CRM",
"Search for B2B leads",
"Score leads against an ICP",
"Notify when leads are ready",
"Review replies and drafts",
"Share read-only shortlists",
"Queue approved LinkedIn messages"
],
"websiteURL": "https://onsa.ai",
"supportURL": "https://app.onsa.ai/support.html",
"privacyPolicyURL": "https://onsa.ai/privacy",
"termsOfServiceURL": "https://app.onsa.ai/terms-and-conditions.html",
"defaultPrompt": [
"Find 5 heads of sales at Series B fintech companies in New York and tell me when they're ready.",
"Which of my campaigns has the most leads? Show its funnel and what people wrote back.",
"Show the drafts waiting for approval and rewrite the weakest around a specific fact."
],
"composerIcon": "./assets/composer-icon.png",
"logo": "./assets/logo.png"
},
"extensions": {
"com.openai": {
"onboardingSkill": "./skills/get-started/SKILL.md",
"review": {
"test_cases": {
"positive": [
{
"description": "Run a live search and be told when leads arrive",
"prompt": "Find 5 heads of sales at Series B fintech companies in New York. Just run it, and tell me when they're ready.",
"tools_triggered": "find_leads, fetch_leads",
"expected_behavior": "find_leads returns a jobId within seconds. In ChatGPT Work mode the chat subscribes to the leads_search.leads_found and leads_search.finished events for that jobId, checks fetch_leads once, and says it will report back. When the first batch lands (usually within about 5 minutes) it calls fetch_leads and posts the leads - name, position, company, the 1-5 score and its reasoning - and again when the agent posts its report. Where the host has no events, fetch_leads is polled as its progress.note directs."
},
{
"description": "See the workspace",
"prompt": "What lead campaigns do I have in Onsa?",
"tools_triggered": "list_campaigns",
"expected_behavior": "A list of the demo workspace's campaigns, newest first, each with its title and lead count."
},
{
"description": "The funnel and the words behind it",
"prompt": "Which of my Onsa campaigns has the most leads? Show its funnel and what people actually wrote back.",
"tools_triggered": "list_campaigns, get_campaign_stats, list_replies",
"expected_behavior": "The campaign with the most leads is named; then invites sent and accepted, messages sent, replies split positive / negative / other; then the reply text per lead, quoted."
},
{
"description": "What to do next on a named campaign",
"prompt": "What should I do today on my Onsa campaign \"US Startup Founders\"?",
"tools_triggered": "list_campaigns, list_next_steps",
"expected_behavior": "A ranked to-do list for that campaign: leads who replied, accepted invites never messaged, and the drafts awaiting approval."
},
{
"description": "Fix a mail-merge draft without sending it",
"prompt": "Show me the outreach drafts waiting for approval in my \"US Startup Founders\" campaign. Pick the most generic one and rewrite it around something specific about that person. Don't send it.",
"tools_triggered": "list_campaigns, list_pending_outreach, get_lead_memo, rewrite_outreach",
"expected_behavior": "The pending drafts; the research memo for the chosen lead; the draft rewritten around one fact from that memo and still pending approval. send_outreach is not called and nothing is sent."
}
],
"negative": [
{
"description": "Asking which software to buy, not asking to search for prospects. The words \"finding B2B leads\" appear verbatim, so the model may reach for the plugin, but the user wants a recommendation about the category and Onsa has nothing to answer it with.",
"prompt": "What's the best tool for finding B2B leads?"
},
{
"description": "Personal networking message, not campaign outreach. It mentions LinkedIn and a message, but there is no campaign and no prospect record - Onsa can only rewrite or send a draft that already exists for a lead in one of the user's campaigns, and cannot compose a message to an arbitrary person.",
"prompt": "Write a LinkedIn message to my former manager asking if she would be a reference for me."
},
{
"description": "General company research, not a prospect search in the user's workspace. It is company-shaped and B2B-shaped, so the model may reach for the plugin, but Onsa searches for people against an ideal-customer profile and stores them in a campaign; it does not answer questions about a named company from public sources.",
"prompt": "Tell me about Stripe's funding history and who its main competitors are."
}
]
},
"commerce": false,
"commerce_description": "Onsa sells nothing inside ChatGPT and never links to a checkout. When a workspace's trial or prospect allowance runs out, the tools say which limit was hit and point to the user's own workspace.",
"demo_recording_url": "https://drive.google.com/file/d/1SwmRkdIfnPBaEzIdxxRr5J1JZI5gdEzG/view"
},
"publication": {
"release_notes": "Searches report back on their own in ChatGPT Work mode, where MCP events are available: the chat is told when the first leads are ready and when the agent posts its report (MCP Events), instead of polling. Adds four skills - get started, build an ICP (from past deals, Onsa's reply history or a connected CRM), find leads, review leads - that read the workspace first, agree the search before spending the allowance, and show each lead with the evidence behind its score."
}
}
},
"apps": "./.app.json"
}
SHA-256: adc2a276ff6df127a6d3bba8d6ec635941e7245a87e43af6cc78d6b4339bc91a