diff --git a/packages/chatgpt-plugin/plugin.json b/packages/chatgpt-plugin/plugin.json index c92914722..4b88d8cc2 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,25 @@ "homepage": "https://index.network", "license": "MIT", "keywords": [ + "serendipity", "discovery", - "intents", - "matching", - "opportunities" + "shared interests", + "complementary skills", + "collaboration", + "introductions", + "meet people", + "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, 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 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": [ @@ -32,8 +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.", - "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", @@ -71,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": [ @@ -92,7 +108,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": "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 fbbf78b0e..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. 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(),