From 9fc48b42b2878bcf4528c1baebf03ba82e84ffce Mon Sep 17 00:00:00 2001 From: seref <1573640+serefyarar@users.noreply.github.com> Date: Tue, 27 Oct 2026 17:07:34 -0700 Subject: [PATCH 1/4] feat(chatgpt-plugin): ground discovery keywords in real member intents ChatGPT's catalog search matches listing keywords loosely and weighs them heavily, and the old set (discovery, intents, matching, opportunities) contained none of the words members actually type. Drawn from a sample of active intents in the dev database, the new keywords, long description, example prompts, and create_intent description cover both the high-value professional asks (cofounder, investors, hiring, mentorship, beta users) and the unstructured, curiosity-driven ones (reading partners, new friends over dinner, meeting people while traveling). Bumps the plugin to 1.3.0 for resubmission; no tool behavior changes. Co-Authored-By: Claude Fable 5 --- packages/chatgpt-plugin/plugin.json | 28 ++++++++++++++++++++++----- services/api/src/lib/mcp/mcp.tools.ts | 2 +- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/chatgpt-plugin/plugin.json b/packages/chatgpt-plugin/plugin.json index c92914722..ed0804200 100644 --- a/packages/chatgpt-plugin/plugin.json +++ b/packages/chatgpt-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "index-network", - "version": "1.2.3", + "version": "1.3.0", "description": "Index Network - find the right people and let them find you.", "author": { "name": "Index Network", @@ -10,17 +10,33 @@ "homepage": "https://index.network", "license": "MIT", "keywords": [ + "cofounder", + "investors", + "fundraising", + "hiring", + "founding engineer", + "mentorship", + "collaborators", + "introductions", + "networking", + "meet people", + "new friends", + "coffee chat", + "beta users", + "design partners", + "matchmaking", + "travel", + "community", "discovery", "intents", - "matching", - "opportunities" + "matching" ], "extensions": { "com.openai": { "interface": { "displayName": "Index Network", "shortDescription": "Find the right people", - "longDescription": "Index Network matches you with the right people. Tell ChatGPT who you're looking for in your own words, from a hire to an investor and beyond. Index keeps it as an intent, matches it with people in your networks who fit, and you review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", + "longDescription": "Index Network matches you with the right people. Tell ChatGPT who you're looking for in your own words: a cofounder, investors for your round, a founding engineer, a mentor, first users for your product — or simply interesting people, like a reading partner, a dinner table of new friends, or people to meet in a city you're visiting. Index keeps it as an intent, matches it with people in your networks who fit, and you review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", "developerName": "Index Network", "category": "Communication", "capabilities": [ @@ -33,6 +49,8 @@ "termsOfServiceURL": "https://index.network/pages/terms-of-use", "defaultPrompt": [ "Find me a technical cofounder on Index.", + "I'm in SF next week — who should I meet?", + "Find me a reading partner in Brooklyn.", "Do I have any new matches on Index?" ], "brandColor": "#111827", @@ -92,7 +110,7 @@ "demo_recording_url": "https://calm-gravatar.space.fast/demo.mp4" }, "publication": { - "release_notes": "Manage your Index intents and review matches from ChatGPT." + "release_notes": "Listing keywords and example prompts now reflect how members actually ask: cofounders, investors, mentors, first users, and everyday asks like meeting people while traveling. No tool behavior changed." } } } diff --git a/services/api/src/lib/mcp/mcp.tools.ts b/services/api/src/lib/mcp/mcp.tools.ts index fbbf78b0e..c004ed324 100644 --- a/services/api/src/lib/mcp/mcp.tools.ts +++ b/services/api/src/lib/mcp/mcp.tools.ts @@ -359,7 +359,7 @@ export function registerMcpTools(server: McpServer, principal: McpPrincipal): vo server.registerTool( 'create_intent', { - description: 'Use when the owner wants to meet, find, hire, fund, collaborate with, or be introduced to people. Prepare and create an intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, + description: 'Use when the owner wants to meet, find, hire, fund, collaborate with, or be introduced to people: a cofounder, investors for a round, a first hire, a mentor, early users — or simply interesting people, like a reading partner, new friends over dinner, or people to meet in a city they are visiting. Prepare and create an intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, inputSchema: z.object({ description: z.string().max(65_536).refine((value) => value.trim().length > 0, 'description is required'), networkIds: z.array(z.string().uuid()).optional(), From 928dbb5a8174b59d82025ebf904db9c21d0372ec Mon Sep 17 00:00:00 2001 From: seref <1573640+serefyarar@users.noreply.github.com> Date: Tue, 27 Oct 2026 17:10:31 -0700 Subject: [PATCH 2/4] Use common archetypes, not literal member intents, in the examples Example prompts and descriptions now state the most frequent kinds of asks in aggregate (new friends in your city, shared hobbies, meeting people on a trip) instead of quoting any single member's intent. Co-Authored-By: Claude Fable 5 --- packages/chatgpt-plugin/plugin.json | 4 ++-- services/api/src/lib/mcp/mcp.tools.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/chatgpt-plugin/plugin.json b/packages/chatgpt-plugin/plugin.json index ed0804200..6f406a9c4 100644 --- a/packages/chatgpt-plugin/plugin.json +++ b/packages/chatgpt-plugin/plugin.json @@ -36,7 +36,7 @@ "interface": { "displayName": "Index Network", "shortDescription": "Find the right people", - "longDescription": "Index Network matches you with the right people. Tell ChatGPT who you're looking for in your own words: a cofounder, investors for your round, a founding engineer, a mentor, first users for your product — or simply interesting people, like a reading partner, a dinner table of new friends, or people to meet in a city you're visiting. Index keeps it as an intent, matches it with people in your networks who fit, and you review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", + "longDescription": "Index Network matches you with the right people. Tell ChatGPT who you're looking for in your own words: a cofounder, investors for your round, a founding engineer, a mentor, first users for your product — or simply interesting people: new friends in your city, someone who shares a hobby, or people to meet on your next trip. Index keeps it as an intent, matches it with people in your networks who fit, and you review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", "developerName": "Index Network", "category": "Communication", "capabilities": [ @@ -50,7 +50,7 @@ "defaultPrompt": [ "Find me a technical cofounder on Index.", "I'm in SF next week — who should I meet?", - "Find me a reading partner in Brooklyn.", + "Help me meet new people in my city.", "Do I have any new matches on Index?" ], "brandColor": "#111827", diff --git a/services/api/src/lib/mcp/mcp.tools.ts b/services/api/src/lib/mcp/mcp.tools.ts index c004ed324..7009abb3c 100644 --- a/services/api/src/lib/mcp/mcp.tools.ts +++ b/services/api/src/lib/mcp/mcp.tools.ts @@ -359,7 +359,7 @@ export function registerMcpTools(server: McpServer, principal: McpPrincipal): vo server.registerTool( 'create_intent', { - description: 'Use when the owner wants to meet, find, hire, fund, collaborate with, or be introduced to people: a cofounder, investors for a round, a first hire, a mentor, early users — or simply interesting people, like a reading partner, new friends over dinner, or people to meet in a city they are visiting. Prepare and create an intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, + description: 'Use when the owner wants to meet, find, hire, fund, collaborate with, or be introduced to people: a cofounder, investors for a round, a first hire, a mentor, early users — or simply interesting people: new friends in their city, someone who shares a hobby, or people to meet on a trip. Prepare and create an intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, inputSchema: z.object({ description: z.string().max(65_536).refine((value) => value.trim().length > 0, 'description is required'), networkIds: z.array(z.string().uuid()).optional(), From 23f2725ef7a1576787f8a6ccfbcff3ffc014ae9a Mon Sep 17 00:00:00 2001 From: seref <1573640+serefyarar@users.noreply.github.com> Date: Thu, 29 Oct 2026 04:18:06 +0000 Subject: [PATCH 3/4] feat(chatgpt-plugin): frame discovery around contextual serendipity --- packages/chatgpt-plugin/plugin.json | 46 +++++++++++++-------------- services/api/src/lib/mcp/mcp.tools.ts | 2 +- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/packages/chatgpt-plugin/plugin.json b/packages/chatgpt-plugin/plugin.json index 6f406a9c4..4b88d8cc2 100644 --- a/packages/chatgpt-plugin/plugin.json +++ b/packages/chatgpt-plugin/plugin.json @@ -10,33 +10,25 @@ "homepage": "https://index.network", "license": "MIT", "keywords": [ - "cofounder", - "investors", - "fundraising", - "hiring", - "founding engineer", - "mentorship", - "collaborators", + "serendipity", + "discovery", + "shared interests", + "complementary skills", + "collaboration", "introductions", - "networking", "meet people", - "new friends", - "coffee chat", - "beta users", - "design partners", - "matchmaking", - "travel", - "community", - "discovery", - "intents", - "matching" + "projects", + "research", + "learning", + "local community", + "travel" ], "extensions": { "com.openai": { "interface": { "displayName": "Index Network", "shortDescription": "Find the right people", - "longDescription": "Index Network matches you with the right people. Tell ChatGPT who you're looking for in your own words: a cofounder, investors for your round, a founding engineer, a mentor, first users for your product — or simply interesting people: new friends in your city, someone who shares a hobby, or people to meet on your next trip. Index keeps it as an intent, matches it with people in your networks who fit, and you review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", + "longDescription": "Index Network helps engineer serendipity from what is happening in your life. Bring the unstructured context of what you are building, exploring, stuck on, or planning. ChatGPT can infer a useful connection and generate an intent in your own terms: your onboarding problem could intersect with a researcher's need for a real product to study; your field research could intersect with an operator's need for evidence; your trip and a niche interest could intersect with a local project. You do not need to know a job title or exactly whom to ask for. When you ask Index to act on that context, it saves the intent and looks for people in your networks with relevant interests, complementary needs, or something to exchange. You review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", "developerName": "Index Network", "category": "Communication", "capabilities": [ @@ -48,10 +40,10 @@ "privacyPolicyURL": "https://index.network/pages/privacy-policy", "termsOfServiceURL": "https://index.network/pages/terms-of-use", "defaultPrompt": [ - "Find me a technical cofounder on Index.", - "I'm in SF next week — who should I meet?", - "Help me meet new people in my city.", - "Do I have any new matches on Index?" + "I'm building a tool, but people drop off during onboarding. Help me find a useful connection on Index.", + "I'm researching urban heat and need field observations. Help me find someone on Index whose work overlaps.", + "I'm in Lisbon next week and exploring field recording. Who could I meet through Index?", + "Based on what we've discussed, help me turn my current context into an intent on Index." ], "brandColor": "#111827", "composerIcon": "./assets/icon.svg", @@ -89,6 +81,12 @@ "prompt": "Tell me about one of my Index matches.", "tools_triggered": "list_opportunities, get_opportunity", "expected_behavior": "Says who the match is with and links to it, or says there are none." + }, + { + "description": "Generate an intent from unstructured context", + "prompt": "I'm building a tool, but people drop off during onboarding. I can offer a real product to study. Use Index to find a useful connection.", + "tools_triggered": "create_intent", + "expected_behavior": "Generates an intent grounded in the onboarding problem and the offered product access, without requiring a role or inventing location, budget, or commitments. Creates it for the owner and returns its link; does not claim a match exists before one is returned." } ], "negative": [ @@ -110,7 +108,7 @@ "demo_recording_url": "https://calm-gravatar.space.fast/demo.mp4" }, "publication": { - "release_notes": "Listing keywords and example prompts now reflect how members actually ask: cofounders, investors, mentors, first users, and everyday asks like meeting people while traveling. No tool behavior changed." + "release_notes": "Discovery keywords and examples now emphasize serendipity at intersections of current projects, interests, constraints, and complementary needs. Tool guidance describes inferring and generating an intent from context when the owner asks Index to act. No API or matching behavior changed." } } } diff --git a/services/api/src/lib/mcp/mcp.tools.ts b/services/api/src/lib/mcp/mcp.tools.ts index 7009abb3c..d8122d354 100644 --- a/services/api/src/lib/mcp/mcp.tools.ts +++ b/services/api/src/lib/mcp/mcp.tools.ts @@ -359,7 +359,7 @@ export function registerMcpTools(server: McpServer, principal: McpPrincipal): vo server.registerTool( 'create_intent', { - description: 'Use when the owner wants to meet, find, hire, fund, collaborate with, or be introduced to people: a cofounder, investors for a round, a first hire, a mentor, early users — or simply interesting people: new friends in their city, someone who shares a hobby, or people to meet on a trip. Prepare and create an intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, + description: 'Use when the owner asks Index to find a useful connection, including from unstructured context about what they are building, exploring, stuck on, or planning. Infer the connection they could benefit from and generate a concrete intent from that context; they do not need to name a role or formulate an intent themselves. Look for intersections of shared interests, complementary needs, skills, place, and timing: a builder with an onboarding problem and a researcher needing a real product to study; field research and an operator needing evidence; travel and a local creative project. Include what the owner needs and can offer when stated. Ground the intent in supplied context; do not invent constraints or commitments, or create an intent merely because a topic came up. Prepare and create the intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, inputSchema: z.object({ description: z.string().max(65_536).refine((value) => value.trim().length > 0, 'description is required'), networkIds: z.array(z.string().uuid()).optional(), From f9bfbeb9921a1d96ee1fa283950a25eb31b10c6f Mon Sep 17 00:00:00 2001 From: seref <1573640+serefyarar@users.noreply.github.com> Date: Thu, 29 Oct 2026 21:19:28 +0000 Subject: [PATCH 4/4] feat(chatgpt-plugin): ground discovery in online conversations --- packages/chatgpt-plugin/plugin.json | 37 +++++++++++++++++---------- services/api/src/lib/mcp/mcp.tools.ts | 2 +- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/packages/chatgpt-plugin/plugin.json b/packages/chatgpt-plugin/plugin.json index 4b88d8cc2..e3ba32d09 100644 --- a/packages/chatgpt-plugin/plugin.json +++ b/packages/chatgpt-plugin/plugin.json @@ -16,19 +16,20 @@ "complementary skills", "collaboration", "introductions", - "meet people", - "projects", + "feedback", + "building", + "debugging", "research", + "writing", "learning", - "local community", - "travel" + "open source" ], "extensions": { "com.openai": { "interface": { "displayName": "Index Network", "shortDescription": "Find the right people", - "longDescription": "Index Network helps engineer serendipity from what is happening in your life. Bring the unstructured context of what you are building, exploring, stuck on, or planning. ChatGPT can infer a useful connection and generate an intent in your own terms: your onboarding problem could intersect with a researcher's need for a real product to study; your field research could intersect with an operator's need for evidence; your trip and a niche interest could intersect with a local project. You do not need to know a job title or exactly whom to ask for. When you ask Index to act on that context, it saves the intent and looks for people in your networks with relevant interests, complementary needs, or something to exchange. You review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", + "longDescription": "Index Network helps engineer serendipity from what you are already discussing with ChatGPT. You might be debugging an agent, building a browser extension, comparing tools, reading conflicting papers, drafting an essay, or learning something new. Those conversations can reveal a useful connection: someone who has solved a similar problem, could try what you built, brings another perspective, or wants to explore the same question. You do not need to name a role or write an intent. ChatGPT can suggest a connection from your current context and, when you ask Index to act, generate and save an intent grounded in that conversation. Index looks for people in your networks with relevant interests, complementary needs, or something to exchange. You review, accept, or pass on each match. Index acts only on your own account and never accepts or passes on a match without your confirmation.", "developerName": "Index Network", "category": "Communication", "capabilities": [ @@ -40,10 +41,10 @@ "privacyPolicyURL": "https://index.network/pages/privacy-policy", "termsOfServiceURL": "https://index.network/pages/terms-of-use", "defaultPrompt": [ - "I'm building a tool, but people drop off during onboarding. Help me find a useful connection on Index.", - "I'm researching urban heat and need field observations. Help me find someone on Index whose work overlaps.", - "I'm in Lisbon next week and exploring field recording. Who could I meet through Index?", - "Based on what we've discussed, help me turn my current context into an intent on Index." + "I'm building a browser extension and wondering whether anyone else has this problem.", + "I'm reading two papers that seem to contradict each other.", + "I'm drafting an essay and keep coming back to the same perspective.", + "I understand the tutorials, but I'm struggling to build something of my own." ], "brandColor": "#111827", "composerIcon": "./assets/icon.svg", @@ -83,10 +84,16 @@ "expected_behavior": "Says who the match is with and links to it, or says there are none." }, { - "description": "Generate an intent from unstructured context", - "prompt": "I'm building a tool, but people drop off during onboarding. I can offer a real product to study. Use Index to find a useful connection.", + "description": "Generate an intent from a building conversation", + "prompt": "I've built a browser extension to organize research tabs and want feedback from people with the same problem. Use Index to find a useful connection.", "tools_triggered": "create_intent", - "expected_behavior": "Generates an intent grounded in the onboarding problem and the offered product access, without requiring a role or inventing location, budget, or commitments. Creates it for the owner and returns its link; does not claim a match exists before one is returned." + "expected_behavior": "Generates an intent grounded in the browser extension and the need for feedback, without requiring a role or inventing commitments. Creates it for the owner and returns its link; does not claim a match exists before one is returned." + }, + { + "description": "Generate an offering from shared experience", + "prompt": "We cut our inference costs by half. Use Index to connect me with someone working through the same problem so I can share what we learned.", + "tools_triggered": "create_intent", + "expected_behavior": "Generates an offering grounded in the stated experience and willingness to share, without inventing methods, metrics beyond those supplied, or availability. Creates it for the owner and returns its link." } ], "negative": [ @@ -101,6 +108,10 @@ { "description": "Changing other users' data is not supported", "prompt": "Delete someone else's Index intents." + }, + { + "description": "A conversation topic alone does not authorize creating an intent", + "prompt": "I'm building a browser extension and wondering whether anyone else has this problem." } ] }, @@ -108,7 +119,7 @@ "demo_recording_url": "https://calm-gravatar.space.fast/demo.mp4" }, "publication": { - "release_notes": "Discovery keywords and examples now emphasize serendipity at intersections of current projects, interests, constraints, and complementary needs. Tool guidance describes inferring and generating an intent from context when the owner asks Index to act. No API or matching behavior changed." + "release_notes": "Listing keywords and examples now start with online conversation situations: building, debugging, researching, writing, and learning. ChatGPT can suggest a relevant connection and generate an intent from the conversation when the owner asks Index to act. No API or matching behavior changed." } } } diff --git a/services/api/src/lib/mcp/mcp.tools.ts b/services/api/src/lib/mcp/mcp.tools.ts index d8122d354..617e7c7c4 100644 --- a/services/api/src/lib/mcp/mcp.tools.ts +++ b/services/api/src/lib/mcp/mcp.tools.ts @@ -359,7 +359,7 @@ export function registerMcpTools(server: McpServer, principal: McpPrincipal): vo server.registerTool( 'create_intent', { - description: 'Use when the owner asks Index to find a useful connection, including from unstructured context about what they are building, exploring, stuck on, or planning. Infer the connection they could benefit from and generate a concrete intent from that context; they do not need to name a role or formulate an intent themselves. Look for intersections of shared interests, complementary needs, skills, place, and timing: a builder with an onboarding problem and a researcher needing a real product to study; field research and an operator needing evidence; travel and a local creative project. Include what the owner needs and can offer when stated. Ground the intent in supplied context; do not invent constraints or commitments, or create an intent merely because a topic came up. Prepare and create the intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, + description: 'Use when the owner asks Index to act on a useful connection arising from their current conversation. Context may include debugging, building a product, comparing tools, researching a question, writing, learning, exploring open source, or sharing hard-won experience. A builder could benefit from someone with the same problem who can try their tool; a researcher from someone exploring the same question; a writer from a complementary perspective; someone sharing experience from a person who needs it. Infer the useful connection and generate a concrete intent from supplied context; the owner does not need to name a role or formulate an intent. Include what they need and can offer when stated, leaving room to discover an unexpected counterpart. Do not invent constraints, commitments, or an existing match. When a connection seems relevant but the owner has not asked Index to act, suggest it conversationally first; do not create an intent merely because a topic came up. Prepare and create the intent for the authenticated owner, sharing it only with eligible networks.' + SOURCE_FIELDS_HINT + LINK_HINT + NARRATION_HINT, inputSchema: z.object({ description: z.string().max(65_536).refine((value) => value.trim().length > 0, 'description is required'), networkIds: z.array(z.string().uuid()).optional(),