veryfront 0.1.611 → 0.1.612

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.611",
3
+ "version": "0.1.612",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -1 +1 @@
1
- {"version":3,"file":"message-prep.d.ts","sourceRoot":"","sources":["../../../src/src/chat/message-prep.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAQjC,OAAO,EAKL,KAAK,aAAa,EAGlB,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AAIpB,uBAAuB;AACvB,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAOD,qBAAqB;AACrB,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,oBAAoB,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,oBAAoB,EAAE,CAiCxB;AAqCD,kDAAkD;AAClD,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,oBAAoB,EAAE,CAiExB;AA+BD,4DAA4D;AAC5D,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGxE;AAED,gDAAgD;AAChD,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAwB7F;AAED,qDAAqD;AACrD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,aAAa,EAAE,GACxB,aAAa,EAAE,CAmDjB;AAyCD,gCAAgC;AAChC,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAiBhF;AAsFD,wCAAwC;AACxC,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,oBAAoB,EAAE,GAC/B,oBAAoB,EAAE,CAwBxB;AAED;;GAEG;AACH,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,sCAAgC,CAAC;AAYnE,wDAAwD;AACxD,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,aAAa,EAAE,GACxB,oBAAoB,EAAE,CAiBxB;AAwLD,6BAA6B;AAC7B,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA0E3F;AAWD,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA4IxF;AAED,yBAAyB;AACzB,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGjF;AAED,sCAAsC;AACtC,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA4B7F;AAED,wBAAwB;AACxB,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,oBAAoB,EAAE,EAChC,QAAQ,GAAE,MAAU,GACnB,oBAAoB,EAAE,CAexB;AAED,2BAA2B;AAC3B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA0D1F;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,GAAE,MAA6B,EACrC,QAAQ,GAAE,MAAU,GACnB,oBAAoB,EAAE,CAMxB;AAED;;GAEG;AACH,4DAA4D;AAC5D,eAAO,MAAM,kCAAkC,mDAA6C,CAAC"}
1
+ {"version":3,"file":"message-prep.d.ts","sourceRoot":"","sources":["../../../src/src/chat/message-prep.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAQjC,OAAO,EAKL,KAAK,aAAa,EAGlB,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AAMpB,uBAAuB;AACvB,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAOD,qBAAqB;AACrB,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,oBAAoB,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,oBAAoB,EAAE,CAiCxB;AAqCD,kDAAkD;AAClD,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,oBAAoB,EAAE,CAiExB;AA+BD,4DAA4D;AAC5D,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGxE;AAED,gDAAgD;AAChD,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAwB7F;AAED,qDAAqD;AACrD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,aAAa,EAAE,GACxB,aAAa,EAAE,CAmDjB;AAyCD,gCAAgC;AAChC,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAiBhF;AAsFD,wCAAwC;AACxC,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,oBAAoB,EAAE,GAC/B,oBAAoB,EAAE,CAwBxB;AAED;;GAEG;AACH,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,sCAAgC,CAAC;AAYnE,wDAAwD;AACxD,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,aAAa,EAAE,GACxB,oBAAoB,EAAE,CAiBxB;AA4ND,6BAA6B;AAC7B,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA4E3F;AAWD,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA4IxF;AAED,yBAAyB;AACzB,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGjF;AAED,sCAAsC;AACtC,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA4B7F;AAED,wBAAwB;AACxB,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,oBAAoB,EAAE,EAChC,QAAQ,GAAE,MAAU,GACnB,oBAAoB,EAAE,CAexB;AAED,2BAA2B;AAC3B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CA0D1F;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,GAAE,MAA6B,EACrC,QAAQ,GAAE,MAAU,GACnB,oBAAoB,EAAE,CAMxB;AAED;;GAEG;AACH,4DAA4D;AAC5D,eAAO,MAAM,kCAAkC,mDAA6C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { convertUiMessagesToProviderModelMessages, getStringField, isReasoningPart, isToolCallPart, isToolResultPart, } from "./conversation.js";
2
2
  import { buildDataFileAnnotation, normalizeInlineAttachmentMediaType, } from "./types.js";
3
+ import { historicalToolSummaries } from "../integrations/_tool_summaries.js";
3
4
  const CHARS_PER_TOKEN = 4;
4
5
  /** Estimate tokens. */
5
6
  export function estimateTokens(value) {
@@ -467,25 +468,11 @@ function maskTask(output, charCount) {
467
468
  function maskGeneric(toolName, charCount) {
468
469
  return `[${toolName} output omitted (${charCount} chars)]`;
469
470
  }
470
- const EMAIL_SUMMARY_TOOL_RE = /(?:^|__)(?:list_emails|search_emails)$/;
471
- const EMAIL_SUMMARY_FIELDS = [
472
- "id",
473
- "threadId",
474
- "from",
475
- "sender",
476
- "to",
477
- "subject",
478
- "date",
479
- "receivedDateTime",
480
- "snippet",
481
- "labelIds",
482
- "isUnread",
483
- "unread",
484
- ];
485
- function isEmailSummaryTool(toolName) {
486
- return EMAIL_SUMMARY_TOOL_RE.test(toolName);
487
- }
488
- function compactEmailContactValue(value) {
471
+ function compactContactValue(value) {
472
+ if (typeof value === "string")
473
+ return value;
474
+ if (!isRecord(value))
475
+ return null;
489
476
  const compact = {};
490
477
  const emailAddress = value.emailAddress;
491
478
  if (isRecord(emailAddress)) {
@@ -500,56 +487,84 @@ function compactEmailContactValue(value) {
500
487
  }
501
488
  return Object.keys(compact).length > 0 ? compact : null;
502
489
  }
503
- function compactEmailMessageValue(value) {
490
+ function compactHistoricalField(field, fieldValue) {
491
+ if (field.kind === "contact") {
492
+ return compactContactValue(fieldValue);
493
+ }
494
+ if (field.kind === "contact-array") {
495
+ if (!Array.isArray(fieldValue))
496
+ return null;
497
+ const contacts = fieldValue
498
+ .map((item) => compactContactValue(item))
499
+ .filter((item) => item !== null);
500
+ return contacts.length > 0 ? contacts : null;
501
+ }
502
+ if (field.kind === "string-array") {
503
+ if (!Array.isArray(fieldValue))
504
+ return null;
505
+ const strings = fieldValue.filter((item) => typeof item === "string");
506
+ return strings.length > 0 ? strings : null;
507
+ }
508
+ if (typeof fieldValue === "string") {
509
+ return field.maxLength ? truncate(fieldValue, field.maxLength) : fieldValue;
510
+ }
511
+ if (typeof fieldValue === "boolean" || typeof fieldValue === "number") {
512
+ return fieldValue;
513
+ }
514
+ if (Array.isArray(fieldValue)) {
515
+ const strings = fieldValue.filter((item) => typeof item === "string");
516
+ return strings.length > 0 ? strings : null;
517
+ }
518
+ return null;
519
+ }
520
+ function compactHistoricalItemValue(value, fields) {
504
521
  if (!isRecord(value))
505
522
  return null;
506
523
  const compact = {};
507
- for (const field of EMAIL_SUMMARY_FIELDS) {
508
- const fieldValue = value[field];
509
- if (typeof fieldValue === "string") {
510
- compact[field] = field === "snippet" ? truncate(fieldValue, 300) : fieldValue;
511
- }
512
- else if (typeof fieldValue === "boolean" || typeof fieldValue === "number") {
513
- compact[field] = fieldValue;
514
- }
515
- else if (Array.isArray(fieldValue)) {
516
- compact[field] = fieldValue.filter((item) => typeof item === "string");
517
- }
518
- else if (isRecord(fieldValue) && (field === "from" || field === "sender")) {
519
- const contact = compactEmailContactValue(fieldValue);
520
- if (contact)
521
- compact[field] = contact;
522
- }
524
+ for (const field of fields) {
525
+ const fieldValue = compactHistoricalField(field, value[field.name]);
526
+ if (fieldValue !== null)
527
+ compact[field.name] = fieldValue;
523
528
  }
524
529
  return Object.keys(compact).length > 0 ? compact : null;
525
530
  }
526
- function compactEmailSummaryOutput(rawValue) {
531
+ function findHistoricalToolSummaryContract(toolName) {
532
+ return historicalToolSummaries[toolName] ?? null;
533
+ }
534
+ function getHistoricalSummaryItems(parsed, contract) {
535
+ if (Array.isArray(parsed))
536
+ return parsed;
537
+ if (!isRecord(parsed))
538
+ return null;
539
+ for (const key of contract.collectionKeys) {
540
+ const value = parsed[key];
541
+ if (Array.isArray(value))
542
+ return value;
543
+ }
544
+ return null;
545
+ }
546
+ function compactHistoricalToolSummaryOutput(rawValue, contract) {
527
547
  const parsed = tryParseJson(rawValue);
528
548
  const output = isRecord(parsed) ? parsed : null;
529
- const sourceMessages = Array.isArray(parsed)
530
- ? parsed
531
- : Array.isArray(output?.messages)
532
- ? output.messages
533
- : Array.isArray(output?.value)
534
- ? output.value
535
- : null;
536
- if (!sourceMessages)
549
+ const sourceItems = getHistoricalSummaryItems(parsed, contract);
550
+ if (!sourceItems)
537
551
  return null;
538
- const messages = sourceMessages
539
- .map((message) => compactEmailMessageValue(message))
540
- .filter((message) => message !== null);
541
- if (messages.length === 0)
552
+ const items = sourceItems
553
+ .map((item) => compactHistoricalItemValue(item, contract.itemFields))
554
+ .filter((item) => item !== null);
555
+ if (items.length === 0)
542
556
  return null;
543
557
  const compacted = {
544
- messageCount: messages.length,
545
- messages,
546
- omitted: "large email bodies and provider-specific payload fields",
558
+ [`${contract.collectionName}Count`]: items.length,
559
+ [contract.collectionName]: items,
560
+ omitted: contract.omitted,
547
561
  };
548
- if (output && "nextPageToken" in output) {
549
- compacted.nextPageToken = output.nextPageToken;
550
- }
551
- if (output && "resultSizeEstimate" in output) {
552
- compacted.resultSizeEstimate = output.resultSizeEstimate;
562
+ if (output && contract.outputFields) {
563
+ for (const field of contract.outputFields) {
564
+ const fieldValue = compactHistoricalField(field, output[field.name]);
565
+ if (fieldValue !== null)
566
+ compacted[field.name] = fieldValue;
567
+ }
553
568
  }
554
569
  return compacted;
555
570
  }
@@ -608,8 +623,10 @@ export function maskOldToolOutputs(messages) {
608
623
  const toolName = part.toolName || callInfo?.toolName || "unknown";
609
624
  const input = callInfo?.input;
610
625
  let masked;
611
- if (isEmailSummaryTool(toolName)) {
612
- masked = compactEmailSummaryOutput(rawValue) ?? maskGeneric(toolName, charCount);
626
+ const summaryContract = findHistoricalToolSummaryContract(toolName);
627
+ if (summaryContract) {
628
+ masked = compactHistoricalToolSummaryOutput(rawValue, summaryContract) ??
629
+ maskGeneric(toolName, charCount);
613
630
  }
614
631
  else {
615
632
  switch (toolName) {
@@ -11,14 +11,14 @@ export const connectors = [
11
11
  { "name": "figma", "displayName": "Figma", "icon": "figma.svg", "description": "Access Figma designs, files, comments, and collaborate on design projects", "auth": { "type": "oauth2", "provider": "figma", "authorizationUrl": "https://www.figma.com/oauth", "tokenUrl": "https://api.figma.com/v1/oauth/token", "scopes": ["current_user:read", "file_content:read", "file_comments:read", "file_comments:write"], "tokenAuthMethod": "client_secret_basic", "requiredApis": [{ "name": "Figma OAuth App", "enableUrl": "https://www.figma.com/developers/apps" }] }, "envVars": [{ "name": "FIGMA_CLIENT_ID", "description": "Figma OAuth Client ID (from your app settings)", "required": true, "sensitive": false, "docsUrl": "https://www.figma.com/developers/apps" }, { "name": "FIGMA_CLIENT_SECRET", "description": "Figma OAuth Client Secret", "required": true, "sensitive": true, "docsUrl": "https://www.figma.com/developers/apps" }], "tools": [{ "id": "get_me", "name": "Get Me", "description": "Get the authenticated user's Figma profile (id, email, handle). Use this to verify the connection and identify the user.", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.figma.com/v1/me" } }, { "id": "list_files", "name": "List Files", "description": "List recent Figma files accessible to the user", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.figma.com/v1/projects/{projectId}/files", "params": { "projectId": { "type": "string", "in": "path", "description": "Figma project ID whose files should be listed", "required": true }, "branch_data": { "type": "boolean", "in": "query", "description": "Include branch metadata", "default": false } } } }, { "id": "get_file", "name": "Get File", "description": "Get detailed information about a Figma file including components and styles", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.figma.com/v1/files/{fileKey}", "params": { "fileKey": { "type": "string", "in": "path", "description": "Figma file key", "required": true }, "ids": { "type": "string", "in": "query", "description": "Comma-separated node IDs to include" }, "depth": { "type": "number", "in": "query", "description": "Traversal depth for document tree" }, "geometry": { "type": "string", "in": "query", "description": "Set to paths to export vector data" }, "plugin_data": { "type": "string", "in": "query", "description": "Plugin data namespace to include" } } } }, { "id": "get_comments", "name": "Get Comments", "description": "Get all comments on a Figma file", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.figma.com/v1/files/{fileKey}/comments", "params": { "fileKey": { "type": "string", "in": "path", "description": "Figma file key", "required": true } }, "response": { "transform": "comments" } } }, { "id": "post_comment", "name": "Post Comment", "description": "Post a comment on a Figma file", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.figma.com/v1/files/{fileKey}/comments", "params": { "fileKey": { "type": "string", "in": "path", "description": "Figma file key", "required": true } }, "body": { "message": { "type": "string", "description": "Comment text", "required": true }, "client_meta": { "type": "object", "description": "Optional Figma comment position metadata" } } } }, { "id": "list_projects", "name": "List Projects", "description": "List all projects in a team. The teamId is the numeric ID found in the Figma URL: figma.com/files/team/{teamId}/...", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.figma.com/v1/teams/{teamId}/projects", "params": { "teamId": { "type": "string", "in": "path", "description": "Numeric Figma team ID from the URL: figma.com/files/team/{teamId}/...", "required": true } }, "response": { "transform": "projects" } } }], "prompts": [{ "id": "review_design", "title": "Review a design", "prompt": "Review a Figma design file and provide feedback on the components, layout, and design system usage.", "category": "design", "icon": "eye" }, { "id": "summarize_comments", "title": "Summarize comments", "prompt": "Read all comments on a Figma file and summarize the feedback, action items, and unresolved discussions.", "category": "design", "icon": "message" }, { "id": "extract_components", "title": "Extract components", "prompt": "List all components in a Figma file and describe their structure, variants, and properties.", "category": "design", "icon": "component" }, { "id": "design_feedback", "title": "Give design feedback", "prompt": "Review the design file and post constructive feedback as comments on specific elements.", "category": "design", "icon": "plus" }], "suggestedWith": ["linear", "slack", "notion"] },
12
12
  { "name": "github", "displayName": "GitHub", "icon": "github.svg", "description": "Manage repositories, issues, and pull requests", "auth": { "type": "oauth2", "provider": "github", "authorizationUrl": "https://github.com/login/oauth/authorize", "tokenUrl": "https://github.com/login/oauth/access_token", "scopes": ["repo", "read:user", "read:org"] }, "envVars": [{ "name": "GITHUB_CLIENT_ID", "description": "GitHub OAuth App Client ID", "required": true, "sensitive": false, "docsUrl": "https://github.com/settings/developers" }, { "name": "GITHUB_CLIENT_SECRET", "description": "GitHub OAuth App Client Secret", "required": true, "sensitive": true, "docsUrl": "https://github.com/settings/developers" }], "tools": [{ "id": "list_repos", "name": "List Repositories", "description": "Get list of user's repositories", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.github.com/user/repos", "params": { "type": { "type": "string", "in": "query", "description": "Type: all, owner, public, private, member" }, "sort": { "type": "string", "in": "query", "description": "Sort: created, updated, pushed, full_name", "default": "updated" }, "per_page": { "type": "number", "in": "query", "description": "Results per page (max 100)", "default": 30 } } } }, { "id": "get_repo", "name": "Get Repository", "description": "Get details of a specific repository", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.github.com/repos/{owner}/{repo}", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true } } } }, { "id": "list_prs", "name": "List Pull Requests", "description": "Get pull requests for a repository", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.github.com/repos/{owner}/{repo}/pulls", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "state": { "type": "string", "in": "query", "description": "State: open, closed, all", "default": "open" }, "per_page": { "type": "number", "in": "query", "description": "Results per page", "default": 30 } } } }, { "id": "create_issue", "name": "Create Issue", "description": "Create a new issue in a repository", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.github.com/repos/{owner}/{repo}/issues", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true } }, "body": { "title": { "type": "string", "description": "Issue title", "required": true }, "body": { "type": "string", "description": "Issue body (markdown)" }, "labels": { "type": "array", "description": "Label names" }, "assignees": { "type": "array", "description": "Usernames to assign" } } } }, { "id": "get_pr_diff", "name": "Get PR Diff", "description": "Get the diff for a pull request", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "pull_number": { "type": "number", "in": "path", "description": "Pull request number", "required": true }, "Accept": { "type": "string", "in": "header", "description": "Response format", "default": "application/vnd.github.v3.diff" } } } }, { "id": "list_issues", "name": "List Issues", "description": "List issues for a repository", "requiresWrite": false, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.github.com/graphql", "query": "query($owner: String!, $repo: String!, $first: Int, $states: [IssueState!]) { repository(owner: $owner, name: $repo) { issues(first: $first, states: $states, orderBy: { field: UPDATED_AT, direction: DESC }) { nodes { id number title body state url createdAt updatedAt author { login } labels(first: 10) { nodes { name } } assignees(first: 10) { nodes { login } } } } } }", "params": { "owner": { "type": "string", "in": "body", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "body", "description": "Repository name", "required": true }, "states": { "type": "string[]", "in": "body", "description": "Issue states to include (e.g. OPEN, CLOSED)", "default": ["OPEN"] }, "first": { "type": "number", "in": "body", "description": "Results per page", "default": 30 } }, "response": { "transform": "repository.issues.nodes" } } }, { "id": "get_issue", "name": "Get Issue", "description": "Get details of a GitHub issue", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.github.com/repos/{owner}/{repo}/issues/{issue_number}", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "issue_number": { "type": "number", "in": "path", "description": "Issue number", "required": true } } } }, { "id": "update_issue", "name": "Update Issue", "description": "Update, close, or reopen a GitHub issue", "requiresWrite": true, "endpoint": { "method": "PATCH", "url": "https://api.github.com/repos/{owner}/{repo}/issues/{issue_number}", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "issue_number": { "type": "number", "in": "path", "description": "Issue number", "required": true } }, "body": { "title": { "type": "string", "description": "Updated issue title" }, "body": { "type": "string", "description": "Updated issue body (markdown)" }, "state": { "type": "string", "description": "Issue state: open or closed" }, "labels": { "type": "array", "description": "Replacement label names" }, "assignees": { "type": "array", "description": "Replacement assignee usernames" } } } }, { "id": "add_issue_comment", "name": "Add Issue Comment", "description": "Add a comment to a GitHub issue or pull request", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.github.com/repos/{owner}/{repo}/issues/{issue_number}/comments", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "issue_number": { "type": "number", "in": "path", "description": "Issue or pull request number", "required": true } }, "body": { "body": { "type": "string", "description": "Comment body (markdown)", "required": true } } } }, { "id": "get_pr", "name": "Get Pull Request", "description": "Get details of a specific pull request (title, body, status, author, reviewers, labels)", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "pull_number": { "type": "number", "in": "path", "description": "Pull request number", "required": true } } } }, { "id": "create_pr", "name": "Create Pull Request", "description": "Create a new pull request in a repository", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.github.com/repos/{owner}/{repo}/pulls", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true } }, "body": { "title": { "type": "string", "description": "PR title", "required": true }, "body": { "type": "string", "description": "PR description (markdown)" }, "head": { "type": "string", "description": "Branch to merge from (e.g. feature-branch or owner:feature-branch)", "required": true }, "base": { "type": "string", "description": "Branch to merge into (e.g. main)", "required": true }, "draft": { "type": "boolean", "description": "Create as draft PR", "default": false } } } }, { "id": "merge_pr", "name": "Merge Pull Request", "description": "Merge an open pull request", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/merge", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "pull_number": { "type": "number", "in": "path", "description": "Pull request number to merge", "required": true } }, "body": { "commit_title": { "type": "string", "description": "Merge commit title" }, "commit_message": { "type": "string", "description": "Merge commit message" }, "merge_method": { "type": "string", "description": "Merge method: merge, squash, or rebase", "default": "merge" } } } }, { "id": "list_commits", "name": "List Commits", "description": "List commits for a repository, branch, or file path", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.github.com/repos/{owner}/{repo}/commits", "params": { "owner": { "type": "string", "in": "path", "description": "Repository owner", "required": true }, "repo": { "type": "string", "in": "path", "description": "Repository name", "required": true }, "sha": { "type": "string", "in": "query", "description": "SHA or branch name to list commits from" }, "path": { "type": "string", "in": "query", "description": "Only include commits touching this file path" }, "per_page": { "type": "number", "in": "query", "description": "Results per page (max 100)", "default": 30 } } } }], "prompts": [{ "id": "review_prs", "title": "Review my open PRs", "prompt": "Show me my open pull requests and help me review them. Summarize the changes and any comments.", "category": "development", "icon": "git-pull-request" }, { "id": "create_issue", "title": "Create GitHub issue", "prompt": "Help me create a new GitHub issue with a clear description and appropriate labels.", "category": "development", "icon": "circle-dot" }, { "id": "summarize_commits", "title": "Summarize recent commits", "prompt": "Summarize the recent commits in my repository and highlight significant changes.", "category": "development", "icon": "git-commit" }], "suggestedWith": ["jira", "slack"] },
13
13
  { "name": "gitlab", "displayName": "GitLab", "icon": "gitlab.svg", "description": "Search and manage GitLab issues, merge requests, and projects", "auth": { "type": "oauth2", "provider": "gitlab", "authorizationUrl": "https://gitlab.com/oauth/authorize", "tokenUrl": "https://gitlab.com/oauth/token", "scopes": ["api", "read_user", "read_repository"], "tokenAuthMethod": "body", "requiredApis": [{ "name": "GitLab Application", "enableUrl": "https://gitlab.com/-/profile/applications" }] }, "envVars": [{ "name": "GITLAB_CLIENT_ID", "description": "GitLab OAuth Application ID", "required": true, "sensitive": false, "docsUrl": "https://docs.gitlab.com/ee/api/oauth2.html" }, { "name": "GITLAB_CLIENT_SECRET", "description": "GitLab OAuth Application Secret", "required": true, "sensitive": true, "docsUrl": "https://docs.gitlab.com/ee/api/oauth2.html" }], "tools": [{ "id": "list_projects", "name": "List Projects", "description": "List accessible GitLab projects", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gitlab.com/api/v4/projects", "params": { "membership": { "type": "boolean", "in": "query", "description": "Only return projects the user is a member of", "default": true }, "search": { "type": "string", "in": "query", "description": "Search text for projects" }, "simple": { "type": "boolean", "in": "query", "description": "Return simplified project objects", "default": true }, "page": { "type": "number", "in": "query", "description": "Result page", "default": 1 }, "per_page": { "type": "number", "in": "query", "description": "Results per page", "default": 20 } } } }, { "id": "get_project", "name": "Get Project", "description": "Get detailed information about a GitLab project", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gitlab.com/api/v4/projects/{projectId}", "params": { "projectId": { "type": "string", "in": "path", "description": "GitLab numeric project ID or raw namespace/project path", "required": true } } } }, { "id": "search_issues", "name": "Search Issues", "description": "Search for issues across projects", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gitlab.com/api/v4/issues", "params": { "search": { "type": "string", "in": "query", "description": "Search text for issue title or description" }, "state": { "type": "string", "in": "query", "description": "Issue state", "default": "opened" }, "scope": { "type": "string", "in": "query", "description": "Issue scope such as created_by_me, assigned_to_me, or all", "default": "assigned_to_me" }, "labels": { "type": "string", "in": "query", "description": "Comma-separated label names" }, "page": { "type": "number", "in": "query", "description": "Result page", "default": 1 }, "per_page": { "type": "number", "in": "query", "description": "Results per page", "default": 20 } } } }, { "id": "get_issue", "name": "Get Issue", "description": "Get detailed information about a specific issue", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gitlab.com/api/v4/projects/{projectId}/issues/{issueIid}", "params": { "projectId": { "type": "string", "in": "path", "description": "GitLab numeric project ID or raw namespace/project path", "required": true }, "issueIid": { "type": "number", "in": "path", "description": "Project-local issue IID", "required": true } } } }, { "id": "create_issue", "name": "Create Issue", "description": "Create a new issue in a project", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gitlab.com/api/v4/projects/{projectId}/issues", "params": { "projectId": { "type": "string", "in": "path", "description": "GitLab numeric project ID or raw namespace/project path", "required": true } }, "body": { "title": { "type": "string", "description": "Issue title", "required": true }, "description": { "type": "string", "description": "Issue description" }, "labels": { "type": "string", "description": "Comma-separated labels" }, "assignee_ids": { "type": "array", "description": "GitLab user IDs to assign" } } } }, { "id": "update_issue", "name": "Update Issue", "description": "Update, close, or reopen a GitLab issue", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://gitlab.com/api/v4/projects/{projectId}/issues/{issueIid}", "params": { "projectId": { "type": "string", "in": "path", "description": "GitLab numeric project ID or raw namespace/project path", "required": true }, "issueIid": { "type": "number", "in": "path", "description": "Project-local issue IID", "required": true } }, "body": { "title": { "type": "string", "description": "Updated issue title" }, "description": { "type": "string", "description": "Updated issue description" }, "state_event": { "type": "string", "description": "close or reopen" }, "labels": { "type": "string", "description": "Comma-separated replacement labels" }, "assignee_ids": { "type": "array", "description": "GitLab user IDs to assign" } } } }, { "id": "add_issue_comment", "name": "Add Issue Comment", "description": "Add a comment/note to a GitLab issue", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gitlab.com/api/v4/projects/{projectId}/issues/{issueIid}/notes", "params": { "projectId": { "type": "string", "in": "path", "description": "GitLab numeric project ID or raw namespace/project path", "required": true }, "issueIid": { "type": "number", "in": "path", "description": "Project-local issue IID", "required": true } }, "body": { "body": { "type": "string", "description": "Comment body in Markdown", "required": true }, "confidential": { "type": "boolean", "description": "Make the note visible only to project members" } } } }, { "id": "list_merge_requests", "name": "List Merge Requests", "description": "List merge requests for a project or across projects", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gitlab.com/api/v4/merge_requests", "params": { "state": { "type": "string", "in": "query", "description": "Merge request state", "default": "opened" }, "scope": { "type": "string", "in": "query", "description": "Merge request scope such as created_by_me, assigned_to_me, or all", "default": "assigned_to_me" }, "search": { "type": "string", "in": "query", "description": "Search text for merge requests" }, "page": { "type": "number", "in": "query", "description": "Result page", "default": 1 }, "per_page": { "type": "number", "in": "query", "description": "Results per page", "default": 20 } } } }, { "id": "get_merge_request", "name": "Get Merge Request", "description": "Get detailed information about a specific GitLab merge request", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gitlab.com/api/v4/projects/{projectId}/merge_requests/{mergeRequestIid}", "params": { "projectId": { "type": "string", "in": "path", "description": "GitLab numeric project ID or raw namespace/project path", "required": true }, "mergeRequestIid": { "type": "number", "in": "path", "description": "Project-local merge request IID", "required": true } } } }, { "id": "add_merge_request_comment", "name": "Add Merge Request Comment", "description": "Add a comment/note to a GitLab merge request", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gitlab.com/api/v4/projects/{projectId}/merge_requests/{mergeRequestIid}/notes", "params": { "projectId": { "type": "string", "in": "path", "description": "GitLab numeric project ID or raw namespace/project path", "required": true }, "mergeRequestIid": { "type": "number", "in": "path", "description": "Project-local merge request IID", "required": true } }, "body": { "body": { "type": "string", "description": "Comment body in Markdown", "required": true }, "internal": { "type": "boolean", "description": "Make the note internal when supported" } } } }], "prompts": [{ "id": "find_issues", "title": "Find my issues", "prompt": "Search for issues assigned to me that are open. Show me the most important ones.", "category": "development", "icon": "bug" }, { "id": "review_mrs", "title": "Review merge requests", "prompt": "Show me all open merge requests that need my review. Summarize what each one does.", "category": "development", "icon": "git-merge" }, { "id": "create_bug_report", "title": "Create bug report", "prompt": "Help me create a detailed bug report issue with steps to reproduce, expected vs actual behavior.", "category": "development", "icon": "plus" }, { "id": "project_status", "title": "Project status", "prompt": "Give me a summary of my projects: open issues, merge requests, and recent activity.", "category": "development", "icon": "list" }], "suggestedWith": ["github", "jira", "slack"] },
14
- { "name": "gmail", "displayName": "Gmail", "icon": "gmail.svg", "description": "Read and send emails via Gmail API", "auth": { "type": "oauth2", "provider": "google", "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth", "tokenUrl": "https://oauth2.googleapis.com/token", "scopes": ["https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.send", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.labels", "https://www.googleapis.com/auth/gmail.compose", "https://mail.google.com/"], "requiredApis": [{ "name": "Gmail API", "enableUrl": "https://console.cloud.google.com/apis/library/gmail.googleapis.com" }] }, "envVars": [{ "name": "GOOGLE_CLIENT_ID", "description": "Google OAuth Client ID", "required": true, "sensitive": false, "docsUrl": "https://console.cloud.google.com/apis/credentials" }, { "name": "GOOGLE_CLIENT_SECRET", "description": "Google OAuth Client Secret", "required": true, "sensitive": true, "docsUrl": "https://console.cloud.google.com/apis/credentials" }], "tools": [{ "id": "list_emails", "name": "List Emails", "description": "List Gmail message summaries with IDs, sender, recipient, subject, date, snippet, labels, and pagination tokens. Use get-email only when full message content is needed.", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages", "params": { "maxResults": { "type": "number", "in": "query", "description": "Maximum number of message summaries to return (1-50)", "default": 20 }, "q": { "type": "string", "in": "query", "description": "Gmail search query (e.g. is:unread, from:user@example.com)" }, "labelIds": { "type": "string[]", "in": "query", "description": "Only return messages with these label IDs (e.g. INBOX, UNREAD)" }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "enrich": { "type": "gmail-message-metadata", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{id}", "idField": "id", "metadataHeaders": ["From", "To", "Subject", "Date"], "maxItems": 50 } } } }, { "id": "send_email", "name": "Send Email", "description": "Send an email to recipients", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/send", "body": { "raw": { "type": "string", "description": "Base64url-encoded RFC 2822 email message", "required": true }, "threadId": { "type": "string", "description": "Thread ID for a reply" } } } }, { "id": "get_email", "name": "Get Email", "description": "Get a specific email by ID with full content", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true }, "format": { "type": "string", "in": "query", "description": "Format: full, metadata, minimal, raw", "default": "full" }, "metadataHeaders": { "type": "string[]", "in": "query", "description": "Headers to include when format is metadata, e.g. From, To, Subject, Date" } } } }, { "id": "search_emails", "name": "Search Emails", "description": "Search Gmail messages and return summaries with IDs, sender, recipient, subject, date, snippet, labels, and pagination tokens.", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages", "params": { "q": { "type": "string", "in": "query", "description": "Gmail search query", "required": true }, "maxResults": { "type": "number", "in": "query", "description": "Maximum number of message summaries to return (1-50)", "default": 10 }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "enrich": { "type": "gmail-message-metadata", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{id}", "idField": "id", "metadataHeaders": ["From", "To", "Subject", "Date"], "maxItems": 50 } } } }, { "id": "mark_email_read", "name": "Mark Email Read", "description": "Mark an email as read", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "removeLabelIds": { "type": "array", "description": "Label IDs to remove, use UNREAD", "default": ["UNREAD"] } } } }, { "id": "archive_email", "name": "Archive Email", "description": "Archive an email", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "removeLabelIds": { "type": "array", "description": "Label IDs to remove, use INBOX", "default": ["INBOX"] } } } }, { "id": "list_labels", "name": "List Labels", "description": "List Gmail labels", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels", "response": { "transform": "labels" } } }, { "id": "get_label", "name": "Get Label", "description": "Get a Gmail label", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels/{labelId}", "params": { "labelId": { "type": "string", "in": "path", "description": "Label ID", "required": true } } } }, { "id": "create_label", "name": "Create Label", "description": "Create a Gmail user label", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels", "body": { "name": { "type": "string", "description": "Label display name", "required": true }, "messageListVisibility": { "type": "string", "description": "Message list visibility: show or hide" }, "labelListVisibility": { "type": "string", "description": "Label list visibility" }, "color": { "type": "object", "description": "Label color object" } } } }, { "id": "update_label", "name": "Update Label", "description": "Update a Gmail user label", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels/{labelId}", "params": { "labelId": { "type": "string", "in": "path", "description": "Label ID", "required": true } }, "body": { "name": { "type": "string", "description": "Label display name", "required": true }, "messageListVisibility": { "type": "string", "description": "Message list visibility: show or hide" }, "labelListVisibility": { "type": "string", "description": "Label list visibility" }, "color": { "type": "object", "description": "Label color object" } } } }, { "id": "delete_label", "name": "Delete Label", "description": "Delete a Gmail user label", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels/{labelId}", "params": { "labelId": { "type": "string", "in": "path", "description": "Label ID", "required": true } } } }, { "id": "apply_labels", "name": "Apply Labels", "description": "Apply or remove labels on an email", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "modify_email_labels", "name": "Modify Email Labels", "description": "Modify labels on an email", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "trash_email", "name": "Trash Email", "description": "Move an email to trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/trash", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } } } }, { "id": "untrash_email", "name": "Untrash Email", "description": "Remove an email from trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/untrash", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } } } }, { "id": "delete_email", "name": "Delete Email", "description": "Permanently delete an email", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } } } }, { "id": "batch_modify_emails", "name": "Batch Modify Emails", "description": "Modify labels on multiple emails", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/batchModify", "body": { "ids": { "type": "array", "description": "Email message IDs", "required": true }, "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "batch_delete_emails", "name": "Batch Delete Emails", "description": "Permanently delete multiple emails", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/batchDelete", "body": { "ids": { "type": "array", "description": "Email message IDs", "required": true } } } }, { "id": "list_threads", "name": "List Threads", "description": "List Gmail threads", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads", "params": { "maxResults": { "type": "number", "in": "query", "description": "Maximum number of threads to return (1-500)", "default": 20 }, "q": { "type": "string", "in": "query", "description": "Gmail search query" }, "labelIds": { "type": "string[]", "in": "query", "description": "Only return threads with these label IDs" }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "transform": "threads" } } }, { "id": "get_thread", "name": "Get Thread", "description": "Get a Gmail thread", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true }, "format": { "type": "string", "in": "query", "description": "Format: full, metadata, minimal", "default": "full" } } } }, { "id": "modify_thread_labels", "name": "Modify Thread Labels", "description": "Modify labels on a Gmail thread", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}/modify", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } }, "body": { "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "trash_thread", "name": "Trash Thread", "description": "Move a Gmail thread to trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}/trash", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } } } }, { "id": "untrash_thread", "name": "Untrash Thread", "description": "Remove a Gmail thread from trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}/untrash", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } } } }, { "id": "delete_thread", "name": "Delete Thread", "description": "Permanently delete a Gmail thread", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } } } }, { "id": "create_draft", "name": "Create Draft", "description": "Create a Gmail draft", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts", "body": { "message": { "type": "object", "description": "Draft message containing raw RFC 2822 content", "required": true } } } }, { "id": "list_drafts", "name": "List Drafts", "description": "List Gmail drafts", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts", "params": { "maxResults": { "type": "number", "in": "query", "description": "Maximum number of drafts to return (1-500)", "default": 20 }, "q": { "type": "string", "in": "query", "description": "Gmail search query" }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "transform": "drafts" } } }, { "id": "get_draft", "name": "Get Draft", "description": "Get a Gmail draft", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/{draftId}", "params": { "draftId": { "type": "string", "in": "path", "description": "Draft ID", "required": true }, "format": { "type": "string", "in": "query", "description": "Format: full, metadata, minimal, raw", "default": "full" } } } }, { "id": "update_draft", "name": "Update Draft", "description": "Replace a Gmail draft", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/{draftId}", "params": { "draftId": { "type": "string", "in": "path", "description": "Draft ID", "required": true } }, "body": { "message": { "type": "object", "description": "Draft message containing raw RFC 2822 content", "required": true } } } }, { "id": "send_draft", "name": "Send Draft", "description": "Send an existing Gmail draft", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/send", "body": { "id": { "type": "string", "description": "Draft ID", "required": true } } } }, { "id": "delete_draft", "name": "Delete Draft", "description": "Permanently delete a Gmail draft", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/{draftId}", "params": { "draftId": { "type": "string", "in": "path", "description": "Draft ID", "required": true } } } }, { "id": "get_attachment", "name": "Get Attachment", "description": "Get a Gmail message attachment", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/attachments/{attachmentId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true }, "attachmentId": { "type": "string", "in": "path", "description": "Attachment ID", "required": true } } } }, { "id": "get_profile", "name": "Get Profile", "description": "Get the Gmail mailbox profile", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/profile" } }, { "id": "list_history", "name": "List History", "description": "List Gmail mailbox history changes", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/history", "params": { "startHistoryId": { "type": "string", "in": "query", "description": "History ID to start after", "required": true }, "maxResults": { "type": "number", "in": "query", "description": "Maximum history records", "default": 100 }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" }, "labelId": { "type": "string", "in": "query", "description": "Only return history for this label" }, "historyTypes": { "type": "string[]", "in": "query", "description": "History event types" } } } }], "prompts": [{ "id": "summarize_emails", "title": "Summarize today's emails", "prompt": "Summarize my unread emails from today. Group them by priority and highlight any that need immediate attention.", "category": "productivity", "icon": "mail" }, { "id": "draft_reply", "title": "Draft a quick reply", "prompt": "Help me draft a reply to my most recent email. Keep it professional and concise.", "category": "productivity", "icon": "reply" }, { "id": "find_emails", "title": "Find important emails", "prompt": "Search my emails for important messages from the past week that I might have missed.", "category": "productivity", "icon": "search" }], "suggestedWith": ["calendar", "slack"] },
14
+ { "name": "gmail", "displayName": "Gmail", "icon": "gmail.svg", "description": "Read and send emails via Gmail API", "auth": { "type": "oauth2", "provider": "google", "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth", "tokenUrl": "https://oauth2.googleapis.com/token", "scopes": ["https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.send", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.labels", "https://www.googleapis.com/auth/gmail.compose", "https://mail.google.com/"], "requiredApis": [{ "name": "Gmail API", "enableUrl": "https://console.cloud.google.com/apis/library/gmail.googleapis.com" }] }, "envVars": [{ "name": "GOOGLE_CLIENT_ID", "description": "Google OAuth Client ID", "required": true, "sensitive": false, "docsUrl": "https://console.cloud.google.com/apis/credentials" }, { "name": "GOOGLE_CLIENT_SECRET", "description": "Google OAuth Client Secret", "required": true, "sensitive": true, "docsUrl": "https://console.cloud.google.com/apis/credentials" }], "tools": [{ "id": "list_emails", "name": "List Emails", "description": "List Gmail message summaries with IDs, sender, recipient, subject, date, snippet, labels, and pagination tokens. Use get-email only when full message content is needed.", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages", "params": { "maxResults": { "type": "number", "in": "query", "description": "Maximum number of message summaries to return (1-50)", "default": 20 }, "q": { "type": "string", "in": "query", "description": "Gmail search query (e.g. is:unread, from:user@example.com)" }, "labelIds": { "type": "string[]", "in": "query", "description": "Only return messages with these label IDs (e.g. INBOX, UNREAD)" }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "enrich": { "type": "gmail-message-metadata", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{id}", "idField": "id", "metadataHeaders": ["From", "To", "Subject", "Date"], "maxItems": 50 }, "historicalSummary": { "collectionKeys": ["messages", "data"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "threadId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "to" }, { "name": "subject" }, { "name": "date" }, { "name": "internalDate" }, { "name": "snippet", "maxLength": 300 }, { "name": "labelIds", "kind": "string-array" }, { "name": "isUnread" }, { "name": "unread" }], "outputFields": [{ "name": "nextPageToken" }, { "name": "resultSizeEstimate" }], "omitted": "large email bodies and provider-specific payload fields" } } } }, { "id": "send_email", "name": "Send Email", "description": "Send an email to recipients", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/send", "body": { "raw": { "type": "string", "description": "Base64url-encoded RFC 2822 email message", "required": true }, "threadId": { "type": "string", "description": "Thread ID for a reply" } } } }, { "id": "get_email", "name": "Get Email", "description": "Get a specific email by ID with full content", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true }, "format": { "type": "string", "in": "query", "description": "Format: full, metadata, minimal, raw", "default": "full" }, "metadataHeaders": { "type": "string[]", "in": "query", "description": "Headers to include when format is metadata, e.g. From, To, Subject, Date" } } } }, { "id": "search_emails", "name": "Search Emails", "description": "Search Gmail messages and return summaries with IDs, sender, recipient, subject, date, snippet, labels, and pagination tokens.", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages", "params": { "q": { "type": "string", "in": "query", "description": "Gmail search query", "required": true }, "maxResults": { "type": "number", "in": "query", "description": "Maximum number of message summaries to return (1-50)", "default": 10 }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "enrich": { "type": "gmail-message-metadata", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{id}", "idField": "id", "metadataHeaders": ["From", "To", "Subject", "Date"], "maxItems": 50 }, "historicalSummary": { "collectionKeys": ["messages", "data"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "threadId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "to" }, { "name": "subject" }, { "name": "date" }, { "name": "internalDate" }, { "name": "snippet", "maxLength": 300 }, { "name": "labelIds", "kind": "string-array" }, { "name": "isUnread" }, { "name": "unread" }], "outputFields": [{ "name": "nextPageToken" }, { "name": "resultSizeEstimate" }], "omitted": "large email bodies and provider-specific payload fields" } } } }, { "id": "mark_email_read", "name": "Mark Email Read", "description": "Mark an email as read", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "removeLabelIds": { "type": "array", "description": "Label IDs to remove, use UNREAD", "default": ["UNREAD"] } } } }, { "id": "archive_email", "name": "Archive Email", "description": "Archive an email", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "removeLabelIds": { "type": "array", "description": "Label IDs to remove, use INBOX", "default": ["INBOX"] } } } }, { "id": "list_labels", "name": "List Labels", "description": "List Gmail labels", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels", "response": { "transform": "labels" } } }, { "id": "get_label", "name": "Get Label", "description": "Get a Gmail label", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels/{labelId}", "params": { "labelId": { "type": "string", "in": "path", "description": "Label ID", "required": true } } } }, { "id": "create_label", "name": "Create Label", "description": "Create a Gmail user label", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels", "body": { "name": { "type": "string", "description": "Label display name", "required": true }, "messageListVisibility": { "type": "string", "description": "Message list visibility: show or hide" }, "labelListVisibility": { "type": "string", "description": "Label list visibility" }, "color": { "type": "object", "description": "Label color object" } } } }, { "id": "update_label", "name": "Update Label", "description": "Update a Gmail user label", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels/{labelId}", "params": { "labelId": { "type": "string", "in": "path", "description": "Label ID", "required": true } }, "body": { "name": { "type": "string", "description": "Label display name", "required": true }, "messageListVisibility": { "type": "string", "description": "Message list visibility: show or hide" }, "labelListVisibility": { "type": "string", "description": "Label list visibility" }, "color": { "type": "object", "description": "Label color object" } } } }, { "id": "delete_label", "name": "Delete Label", "description": "Delete a Gmail user label", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/labels/{labelId}", "params": { "labelId": { "type": "string", "in": "path", "description": "Label ID", "required": true } } } }, { "id": "apply_labels", "name": "Apply Labels", "description": "Apply or remove labels on an email", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "modify_email_labels", "name": "Modify Email Labels", "description": "Modify labels on an email", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/modify", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } }, "body": { "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "trash_email", "name": "Trash Email", "description": "Move an email to trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/trash", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } } } }, { "id": "untrash_email", "name": "Untrash Email", "description": "Remove an email from trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/untrash", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } } } }, { "id": "delete_email", "name": "Delete Email", "description": "Permanently delete an email", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true } } } }, { "id": "batch_modify_emails", "name": "Batch Modify Emails", "description": "Modify labels on multiple emails", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/batchModify", "body": { "ids": { "type": "array", "description": "Email message IDs", "required": true }, "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "batch_delete_emails", "name": "Batch Delete Emails", "description": "Permanently delete multiple emails", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/batchDelete", "body": { "ids": { "type": "array", "description": "Email message IDs", "required": true } } } }, { "id": "list_threads", "name": "List Threads", "description": "List Gmail threads", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads", "params": { "maxResults": { "type": "number", "in": "query", "description": "Maximum number of threads to return (1-500)", "default": 20 }, "q": { "type": "string", "in": "query", "description": "Gmail search query" }, "labelIds": { "type": "string[]", "in": "query", "description": "Only return threads with these label IDs" }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "transform": "threads" } } }, { "id": "get_thread", "name": "Get Thread", "description": "Get a Gmail thread", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true }, "format": { "type": "string", "in": "query", "description": "Format: full, metadata, minimal", "default": "full" } } } }, { "id": "modify_thread_labels", "name": "Modify Thread Labels", "description": "Modify labels on a Gmail thread", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}/modify", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } }, "body": { "addLabelIds": { "type": "array", "description": "Label IDs to add" }, "removeLabelIds": { "type": "array", "description": "Label IDs to remove" } } } }, { "id": "trash_thread", "name": "Trash Thread", "description": "Move a Gmail thread to trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}/trash", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } } } }, { "id": "untrash_thread", "name": "Untrash Thread", "description": "Remove a Gmail thread from trash", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}/untrash", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } } } }, { "id": "delete_thread", "name": "Delete Thread", "description": "Permanently delete a Gmail thread", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/threads/{threadId}", "params": { "threadId": { "type": "string", "in": "path", "description": "Thread ID", "required": true } } } }, { "id": "create_draft", "name": "Create Draft", "description": "Create a Gmail draft", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts", "body": { "message": { "type": "object", "description": "Draft message containing raw RFC 2822 content", "required": true } } } }, { "id": "list_drafts", "name": "List Drafts", "description": "List Gmail drafts", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts", "params": { "maxResults": { "type": "number", "in": "query", "description": "Maximum number of drafts to return (1-500)", "default": 20 }, "q": { "type": "string", "in": "query", "description": "Gmail search query" }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" } }, "response": { "transform": "drafts" } } }, { "id": "get_draft", "name": "Get Draft", "description": "Get a Gmail draft", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/{draftId}", "params": { "draftId": { "type": "string", "in": "path", "description": "Draft ID", "required": true }, "format": { "type": "string", "in": "query", "description": "Format: full, metadata, minimal, raw", "default": "full" } } } }, { "id": "update_draft", "name": "Update Draft", "description": "Replace a Gmail draft", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/{draftId}", "params": { "draftId": { "type": "string", "in": "path", "description": "Draft ID", "required": true } }, "body": { "message": { "type": "object", "description": "Draft message containing raw RFC 2822 content", "required": true } } } }, { "id": "send_draft", "name": "Send Draft", "description": "Send an existing Gmail draft", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/send", "body": { "id": { "type": "string", "description": "Draft ID", "required": true } } } }, { "id": "delete_draft", "name": "Delete Draft", "description": "Permanently delete a Gmail draft", "requiresWrite": true, "endpoint": { "method": "DELETE", "url": "https://gmail.googleapis.com/gmail/v1/users/me/drafts/{draftId}", "params": { "draftId": { "type": "string", "in": "path", "description": "Draft ID", "required": true } } } }, { "id": "get_attachment", "name": "Get Attachment", "description": "Get a Gmail message attachment", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/messages/{messageId}/attachments/{attachmentId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Email message ID", "required": true }, "attachmentId": { "type": "string", "in": "path", "description": "Attachment ID", "required": true } } } }, { "id": "get_profile", "name": "Get Profile", "description": "Get the Gmail mailbox profile", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/profile" } }, { "id": "list_history", "name": "List History", "description": "List Gmail mailbox history changes", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://gmail.googleapis.com/gmail/v1/users/me/history", "params": { "startHistoryId": { "type": "string", "in": "query", "description": "History ID to start after", "required": true }, "maxResults": { "type": "number", "in": "query", "description": "Maximum history records", "default": 100 }, "pageToken": { "type": "string", "in": "query", "description": "Page token for pagination" }, "labelId": { "type": "string", "in": "query", "description": "Only return history for this label" }, "historyTypes": { "type": "string[]", "in": "query", "description": "History event types" } } } }], "prompts": [{ "id": "summarize_emails", "title": "Summarize today's emails", "prompt": "Summarize my unread emails from today. Group them by priority and highlight any that need immediate attention.", "category": "productivity", "icon": "mail" }, { "id": "draft_reply", "title": "Draft a quick reply", "prompt": "Help me draft a reply to my most recent email. Keep it professional and concise.", "category": "productivity", "icon": "reply" }, { "id": "find_emails", "title": "Find important emails", "prompt": "Search my emails for important messages from the past week that I might have missed.", "category": "productivity", "icon": "search" }], "suggestedWith": ["calendar", "slack"] },
15
15
  { "name": "jira", "displayName": "Jira", "icon": "jira.svg", "description": "Search, create, and manage Jira issues and projects", "auth": { "type": "oauth2", "provider": "atlassian", "authorizationUrl": "https://auth.atlassian.com/authorize", "tokenUrl": "https://auth.atlassian.com/oauth/token", "scopes": ["read:jira-work", "write:jira-work", "read:jira-user", "offline_access"], "tokenAuthMethod": "body", "requiredApis": [{ "name": "Atlassian OAuth 2.0", "enableUrl": "https://developer.atlassian.com/console/myapps/" }], "additionalAuthParams": { "audience": "api.atlassian.com", "prompt": "consent" } }, "envVars": [{ "name": "ATLASSIAN_CLIENT_ID", "description": "Atlassian OAuth 2.0 Client ID (from your app)", "required": true, "sensitive": false, "docsUrl": "https://developer.atlassian.com/console/myapps/" }, { "name": "ATLASSIAN_CLIENT_SECRET", "description": "Atlassian OAuth 2.0 Client Secret", "required": true, "sensitive": true, "docsUrl": "https://developer.atlassian.com/console/myapps/" }], "tools": [{ "id": "list_sites", "name": "List Atlassian Sites", "description": "List Atlassian cloud sites/resources the OAuth token can access; use the returned id as cloudId for Jira and Confluence tools", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.atlassian.com/oauth/token/accessible-resources", "response": { "transform": "" } } }, { "id": "list_projects", "name": "List Projects", "description": "List all accessible Jira projects", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/project/search", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from accessible-resources", "required": true }, "query": { "type": "string", "in": "query", "description": "Search text for project name or key" }, "maxResults": { "type": "number", "in": "query", "description": "Maximum projects to return", "default": 50 }, "startAt": { "type": "number", "in": "query", "description": "Pagination offset", "default": 0 } }, "response": { "transform": "values" } } }, { "id": "get_project", "name": "Get Project", "description": "Get detailed information about a Jira project", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from OAuth accessible resources", "required": true }, "projectIdOrKey": { "type": "string", "in": "path", "description": "Jira project ID or key", "required": true } } } }, { "id": "search_issues", "name": "Search Issues", "description": "Search Jira issues using JQL (Jira Query Language)", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/search/jql", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from accessible-resources", "required": true }, "jql": { "type": "string", "in": "query", "description": "Jira Query Language search expression", "required": true }, "maxResults": { "type": "number", "in": "query", "description": "Maximum issues to return", "default": 50 }, "nextPageToken": { "type": "string", "in": "query", "description": "Pagination token from the previous Jira JQL search response" }, "fields": { "type": "array", "in": "query", "description": "Issue fields to include" } }, "response": { "transform": "issues" } } }, { "id": "get_issue", "name": "Get Issue", "description": "Get detailed information about a specific Jira issue", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from accessible-resources", "required": true }, "issueIdOrKey": { "type": "string", "in": "path", "description": "Jira issue ID or key", "required": true }, "fields": { "type": "string", "in": "query", "description": "Comma-separated issue fields to include" } } } }, { "id": "create_issue", "name": "Create Issue", "description": "Create a new Jira issue in a project", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/issue", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from accessible-resources", "required": true } }, "body": { "fields": { "type": "object", "description": "Jira issue fields including project, issuetype, summary, and description", "required": true } } } }, { "id": "update_issue", "name": "Update Issue", "description": "Update an existing Jira issue (status, fields, etc.)", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from accessible-resources", "required": true }, "issueIdOrKey": { "type": "string", "in": "path", "description": "Jira issue ID or key", "required": true } }, "body": { "fields": { "type": "object", "description": "Jira fields to set" }, "update": { "type": "object", "description": "Jira update operations" } } } }, { "id": "list_comments", "name": "List Comments", "description": "List comments on a Jira issue", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from OAuth accessible resources", "required": true }, "issueIdOrKey": { "type": "string", "in": "path", "description": "Jira issue ID or key", "required": true }, "startAt": { "type": "number", "in": "query", "description": "Pagination offset", "default": 0 }, "maxResults": { "type": "number", "in": "query", "description": "Maximum comments to return", "default": 50 } } } }, { "id": "add_comment", "name": "Add Comment", "description": "Add a comment to a Jira issue", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from OAuth accessible resources", "required": true }, "issueIdOrKey": { "type": "string", "in": "path", "description": "Jira issue ID or key", "required": true } }, "body": { "body": { "type": "object", "description": "Comment body in Atlassian Document Format", "required": true } } } }, { "id": "get_transitions", "name": "Get Transitions", "description": "List available workflow transitions for a Jira issue", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from OAuth accessible resources", "required": true }, "issueIdOrKey": { "type": "string", "in": "path", "description": "Jira issue ID or key", "required": true } } } }, { "id": "transition_issue", "name": "Transition Issue", "description": "Move a Jira issue to a new workflow status. First call get_transitions to get valid transition IDs, then pass the ID here.", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions", "params": { "cloudId": { "type": "string", "in": "path", "description": "Atlassian cloud ID from OAuth accessible resources", "required": true }, "issueIdOrKey": { "type": "string", "in": "path", "description": "Jira issue ID or key", "required": true } }, "body": { "transition": { "type": "object", "description": "Transition object with id field, e.g. {\"id\": \"21\"}", "required": true }, "fields": { "type": "object", "description": "Optional field updates to apply during the transition" }, "comment": { "type": "object", "description": "Optional comment in Atlassian Document Format to add with the transition" } } } }], "prompts": [{ "id": "find_bugs", "title": "Find open bugs", "prompt": "Search for all open bugs assigned to me or in my current sprint.", "category": "productivity", "icon": "bug" }, { "id": "create_task", "title": "Create a task", "prompt": "Create a new task in Jira with a title, description, and priority.", "category": "productivity", "icon": "plus" }, { "id": "sprint_summary", "title": "Sprint summary", "prompt": "Get a summary of all issues in the current sprint, organized by status.", "category": "productivity", "icon": "list" }, { "id": "update_status", "title": "Update issue status", "prompt": "Move an issue to a different status (To Do, In Progress, Done, etc.).", "category": "productivity", "icon": "check" }], "suggestedWith": ["github", "slack", "confluence"] },
16
16
  { "name": "linear", "displayName": "Linear", "icon": "linear.svg", "description": "Search, create, and manage Linear issues and projects", "auth": { "type": "oauth2", "provider": "linear", "authorizationUrl": "https://linear.app/oauth/authorize", "tokenUrl": "https://api.linear.app/oauth/token", "scopes": ["read", "write"], "tokenAuthMethod": "basic", "requiredApis": [{ "name": "Linear OAuth Application", "enableUrl": "https://linear.app/settings/api" }] }, "envVars": [{ "name": "LINEAR_CLIENT_ID", "description": "Linear OAuth Client ID (from your OAuth application)", "required": true, "sensitive": false, "docsUrl": "https://linear.app/settings/api" }, { "name": "LINEAR_CLIENT_SECRET", "description": "Linear OAuth Client Secret", "required": true, "sensitive": true, "docsUrl": "https://linear.app/settings/api" }], "tools": [{ "id": "search_issues", "name": "Search Issues", "description": "Search for Linear issues by title or description", "requiresWrite": false, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "query($query: String!, $first: Int) { searchIssues(term: $query, first: $first) { nodes { id identifier title description state { name } assignee { name } priority priorityLabel createdAt updatedAt } } }", "params": { "query": { "type": "string", "in": "body", "description": "Search query text", "required": true }, "first": { "type": "number", "in": "body", "description": "Max results", "default": 20 } }, "response": { "transform": "searchIssues" } } }, { "id": "get_issue", "name": "Get Issue", "description": "Get detailed information about a specific Linear issue", "requiresWrite": false, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "query($id: String!) { issue(id: $id) { id identifier title description state { name } assignee { name email } priority priorityLabel team { name } project { name } labels { nodes { name } } comments { nodes { body user { name } createdAt } } createdAt updatedAt } }", "params": { "id": { "type": "string", "in": "body", "description": "Issue ID or identifier (e.g. ENG-123)", "required": true } }, "response": { "transform": "issue" } } }, { "id": "create_issue", "name": "Create Issue", "description": "Create a new Linear issue in a team", "requiresWrite": true, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "mutation($teamId: String!, $title: String!, $description: String, $priority: Int) { issueCreate(input: { teamId: $teamId, title: $title, description: $description, priority: $priority }) { success issue { id identifier title url } } }", "params": { "teamId": { "type": "string", "in": "body", "description": "Team ID", "required": true }, "title": { "type": "string", "in": "body", "description": "Issue title", "required": true }, "description": { "type": "string", "in": "body", "description": "Issue description (markdown)" }, "priority": { "type": "number", "in": "body", "description": "Priority (0=none, 1=urgent, 2=high, 3=medium, 4=low)" } }, "response": { "transform": "issueCreate" } } }, { "id": "update_issue", "name": "Update Issue", "description": "Update the status, assignee, or other properties of an issue", "requiresWrite": true, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "mutation($id: String!, $stateId: String, $assigneeId: String, $priority: Int) { issueUpdate(id: $id, input: { stateId: $stateId, assigneeId: $assigneeId, priority: $priority }) { success issue { id identifier title state { name } assignee { name } } } }", "params": { "id": { "type": "string", "in": "body", "description": "Issue ID", "required": true }, "stateId": { "type": "string", "in": "body", "description": "New state ID" }, "assigneeId": { "type": "string", "in": "body", "description": "New assignee user ID" }, "priority": { "type": "number", "in": "body", "description": "New priority" } }, "response": { "transform": "issueUpdate" } } }, { "id": "delete_issue", "name": "Delete Issue", "description": "Archive a Linear issue. By default this is non-permanent so canary-created issues do not remain active.", "requiresWrite": true, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "mutation($id: String!, $permanentlyDelete: Boolean) { issueDelete(id: $id, permanentlyDelete: $permanentlyDelete) { success } }", "params": { "id": { "type": "string", "in": "body", "description": "Issue ID", "required": true }, "permanentlyDelete": { "type": "boolean", "in": "body", "description": "Whether to permanently delete the issue. Defaults to false (archive).", "default": false } }, "response": { "transform": "issueDelete" } } }, { "id": "list_projects", "name": "List Projects", "description": "List all projects in the workspace", "requiresWrite": false, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "query($first: Int) { projects(first: $first) { nodes { id name description state startDate targetDate lead { name } teams { nodes { name } } } } }", "params": { "first": { "type": "number", "in": "body", "description": "Max results", "default": 50 } }, "response": { "transform": "projects" } } }, { "id": "list_teams", "name": "List Teams", "description": "List Linear teams in the workspace so issues can be created in the right team", "requiresWrite": false, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "query($first: Int) { teams(first: $first) { nodes { id name key description private issueCount createdAt updatedAt } } }", "params": { "first": { "type": "number", "in": "body", "description": "Max results", "default": 50 } }, "response": { "transform": "teams" } } }, { "id": "list_workflow_states", "name": "List Workflow States", "description": "List workflow states for a Linear team so issues can be moved to the right status", "requiresWrite": false, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "query($teamId: String!) { team(id: $teamId) { id name states { nodes { id name type color position } } } }", "params": { "teamId": { "type": "string", "in": "body", "description": "Team ID", "required": true } }, "response": { "transform": "team.states" } } }, { "id": "list_users", "name": "List Users", "description": "List Linear users in the workspace so issues can be assigned to the right person", "requiresWrite": false, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "query($first: Int) { users(first: $first) { nodes { id name displayName email active avatarUrl } } }", "params": { "first": { "type": "number", "in": "body", "description": "Max results", "default": 50 } }, "response": { "transform": "users" } } }, { "id": "add_comment", "name": "Add Comment", "description": "Add a comment to a Linear issue", "requiresWrite": true, "endpoint": { "type": "graphql", "method": "POST", "url": "https://api.linear.app/graphql", "query": "mutation($issueId: String!, $body: String!) { commentCreate(input: { issueId: $issueId, body: $body }) { success comment { id body createdAt user { id name } issue { id identifier title } } } }", "params": { "issueId": { "type": "string", "in": "body", "description": "Issue ID", "required": true }, "body": { "type": "string", "in": "body", "description": "Comment body in markdown", "required": true } }, "response": { "transform": "commentCreate" } } }], "prompts": [{ "id": "find_issues", "title": "Find my issues", "prompt": "Search for Linear issues assigned to me or related to a specific topic.", "category": "productivity", "icon": "search" }, { "id": "create_bug_report", "title": "Create bug report", "prompt": "Create a new bug report in Linear with title, description, and relevant labels.", "category": "productivity", "icon": "plus" }, { "id": "update_issue_status", "title": "Update issue status", "prompt": "Update the status of a Linear issue (e.g., mark as done, in progress, blocked).", "category": "productivity", "icon": "check" }, { "id": "project_overview", "title": "Project overview", "prompt": "Get an overview of all projects in Linear, including their status and key issues.", "category": "productivity", "icon": "list" }], "suggestedWith": ["github", "slack", "figma"] },
17
17
  { "name": "mixpanel", "displayName": "Mixpanel", "icon": "mixpanel.svg", "description": "Track events, analyze funnels, and understand user behavior with Mixpanel analytics", "auth": { "type": "api-key", "requiredApis": [{ "name": "Mixpanel API", "enableUrl": "https://mixpanel.com/settings/project" }], "keyName": "MIXPANEL_PROJECT_TOKEN" }, "envVars": [{ "name": "MIXPANEL_PROJECT_TOKEN", "description": "Mixpanel Project Token for event tracking", "required": true, "sensitive": true, "docsUrl": "https://docs.mixpanel.com/docs/tracking-methods/id-management/authentication" }, { "name": "MIXPANEL_API_SECRET", "description": "Mixpanel API Secret for data export and query operations", "required": true, "sensitive": true, "docsUrl": "https://developer.mixpanel.com/reference/authentication" }, { "name": "MIXPANEL_PROJECT_ID", "description": "Mixpanel Project ID (found in project settings)", "required": true, "sensitive": false, "docsUrl": "https://docs.mixpanel.com/docs/admin/organizations-projects/manage-projects" }], "tools": [{ "id": "track_event", "name": "Track Event", "description": "Track a custom event in Mixpanel with properties", "requiresWrite": true }, { "id": "query_events", "name": "Query Events", "description": "Query and export event data from Mixpanel", "requiresWrite": false }, { "id": "get_funnel", "name": "Get Funnel", "description": "Retrieve funnel analysis data to understand conversion rates", "requiresWrite": false }, { "id": "get_retention", "name": "Get Retention", "description": "Analyze user retention cohorts over time", "requiresWrite": false }, { "id": "list_cohorts", "name": "List Cohorts", "description": "List all user cohorts defined in your Mixpanel project", "requiresWrite": false }], "prompts": [{ "id": "event_analysis", "title": "Event analysis", "prompt": "Show me the most important events tracked in my Mixpanel project over the last 7 days and their trends.", "category": "analytics", "icon": "chart" }, { "id": "funnel_performance", "title": "Funnel performance", "prompt": "Analyze my key conversion funnels and identify where users are dropping off.", "category": "analytics", "icon": "funnel" }, { "id": "retention_insights", "title": "Retention insights", "prompt": "Give me insights about user retention and cohort behavior over the past month.", "category": "analytics", "icon": "users" }], "suggestedWith": ["slack", "analytics", "monitoring"] },
18
18
  { "name": "neon", "displayName": "Neon", "icon": "neon.svg", "description": "Manage Neon Postgres projects, branches, and execute database queries", "auth": { "type": "api-key", "requiredApis": [{ "name": "Neon Management API", "enableUrl": "https://console.neon.tech/app/settings/api-keys" }], "tokenName": "API Key", "docsUrl": "https://neon.tech/docs/manage/api-keys" }, "envVars": [{ "name": "NEON_API_KEY", "description": "Neon API Key for Management API access", "required": true, "sensitive": true, "docsUrl": "https://neon.tech/docs/manage/api-keys" }, { "name": "DATABASE_URL", "description": "PostgreSQL connection string for database queries", "required": true, "sensitive": true, "docsUrl": "https://neon.tech/docs/connect/connect-from-any-app" }], "npmDependencies": { "pg": "^8.13.1" }, "tools": [{ "id": "list_projects", "name": "List Projects", "description": "List all Neon projects in your account", "requiresWrite": false }, { "id": "list_branches", "name": "List Branches", "description": "List all branches for a specific project", "requiresWrite": false }, { "id": "query_database", "name": "Query Database", "description": "Execute SQL queries against the connected database", "requiresWrite": false }, { "id": "list_tables", "name": "List Tables", "description": "List all tables in the connected database", "requiresWrite": false }, { "id": "describe_table", "name": "Describe Table", "description": "Get detailed schema information for a specific table", "requiresWrite": false }], "prompts": [{ "id": "check_db_status", "title": "Check database status", "prompt": "Show me the status of my Neon projects and their branches.", "category": "database", "icon": "database" }, { "id": "explore_schema", "title": "Explore database schema", "prompt": "List all tables in my database and show me the schema for the main tables.", "category": "database", "icon": "table" }, { "id": "query_data", "title": "Query database", "prompt": "Help me query my database to find specific data.", "category": "database", "icon": "search" }], "suggestedWith": ["stripe", "clerk", "vercel"] },
19
19
  { "name": "notion", "displayName": "Notion", "icon": "notion.svg", "description": "Search, read, and create pages in Notion workspaces", "auth": { "type": "oauth2", "provider": "notion", "authorizationUrl": "https://api.notion.com/v1/oauth/authorize", "tokenUrl": "https://api.notion.com/v1/oauth/token", "scopes": [], "tokenAuthMethod": "basic", "requiredApis": [{ "name": "Notion Integration", "enableUrl": "https://www.notion.so/my-integrations" }] }, "envVars": [{ "name": "NOTION_CLIENT_ID", "description": "Notion OAuth Client ID (from your integration)", "required": true, "sensitive": false, "docsUrl": "https://www.notion.so/my-integrations" }, { "name": "NOTION_CLIENT_SECRET", "description": "Notion OAuth Client Secret", "required": true, "sensitive": true, "docsUrl": "https://www.notion.so/my-integrations" }], "tools": [{ "id": "search_notion", "name": "Search Notion", "description": "Search pages and databases in the workspace", "requiresWrite": false, "endpoint": { "method": "POST", "url": "https://api.notion.com/v1/search", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" } }, "body": { "query": { "type": "string", "description": "Search query text" }, "filter": { "type": "object", "description": "Optional Notion search filter" }, "sort": { "type": "object", "description": "Optional Notion search sort" }, "page_size": { "type": "number", "description": "Maximum results to return", "default": 10 }, "start_cursor": { "type": "string", "description": "Pagination cursor" } }, "response": { "transform": "results" } } }, { "id": "read_page", "name": "Read Page", "description": "Read the content of a Notion page", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.notion.com/v1/blocks/{pageId}/children", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" }, "pageId": { "type": "string", "in": "path", "description": "Notion page ID", "required": true }, "page_size": { "type": "number", "in": "query", "description": "Maximum child blocks to return", "default": 100 }, "start_cursor": { "type": "string", "in": "query", "description": "Pagination cursor" } }, "response": { "transform": "results" } } }, { "id": "create_page", "name": "Create Page", "description": "Create a new page in a database or as a subpage", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://api.notion.com/v1/pages", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" } }, "body": { "parent": { "type": "object", "description": "Notion parent object, e.g. database_id or page_id", "required": true }, "properties": { "type": "object", "description": "Page properties", "required": true }, "children": { "type": "array", "description": "Optional child blocks" } } } }, { "id": "query_database", "name": "Query Database", "description": "Query a Notion database with filters and sorts", "requiresWrite": false, "endpoint": { "method": "POST", "url": "https://api.notion.com/v1/databases/{databaseId}/query", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" }, "databaseId": { "type": "string", "in": "path", "description": "Notion database ID", "required": true } }, "body": { "filter": { "type": "object", "description": "Optional Notion database filter" }, "sorts": { "type": "array", "description": "Optional Notion database sorts" }, "page_size": { "type": "number", "description": "Maximum results to return", "default": 10 }, "start_cursor": { "type": "string", "description": "Pagination cursor" } }, "response": { "transform": "results" } } }, { "id": "get_page", "name": "Get Page Metadata", "description": "Retrieve Notion page metadata and properties without fetching child block content", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.notion.com/v1/pages/{pageId}", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" }, "pageId": { "type": "string", "in": "path", "description": "Notion page ID", "required": true } } } }, { "id": "get_database", "name": "Get Database", "description": "Retrieve Notion database metadata, title, and property schema", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://api.notion.com/v1/databases/{databaseId}", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" }, "databaseId": { "type": "string", "in": "path", "description": "Notion database ID", "required": true } } } }, { "id": "append_blocks", "name": "Append Blocks", "description": "Append child blocks to a Notion page or block", "requiresWrite": true, "endpoint": { "method": "PATCH", "url": "https://api.notion.com/v1/blocks/{blockId}/children", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" }, "blockId": { "type": "string", "in": "path", "description": "Page or block ID to append children to", "required": true } }, "body": { "children": { "type": "array", "description": "Notion block objects to append", "required": true }, "after": { "type": "string", "description": "Optional existing child block ID after which to append" } } } }, { "id": "update_page", "name": "Update Page", "description": "Update Notion page properties or archive/unarchive a page", "requiresWrite": true, "endpoint": { "method": "PATCH", "url": "https://api.notion.com/v1/pages/{pageId}", "params": { "Notion-Version": { "type": "string", "in": "header", "description": "Notion API version", "default": "2022-06-28" }, "pageId": { "type": "string", "in": "path", "description": "Notion page ID", "required": true } }, "body": { "properties": { "type": "object", "description": "Page properties to update" }, "archived": { "type": "boolean", "description": "Whether the page should be archived" }, "icon": { "type": "object", "description": "Optional page icon" }, "cover": { "type": "object", "description": "Optional page cover" } } } }], "prompts": [{ "id": "search_docs", "title": "Search my docs", "prompt": "Search my Notion workspace for relevant documentation or notes about a topic.", "category": "productivity", "icon": "search" }, { "id": "summarize_page", "title": "Summarize a page", "prompt": "Read and summarize a specific Notion page. Extract the key points and action items.", "category": "productivity", "icon": "document" }, { "id": "create_meeting_notes", "title": "Create meeting notes", "prompt": "Create a new meeting notes page with today's date, attendees, agenda, and action items sections.", "category": "productivity", "icon": "plus" }], "suggestedWith": ["gmail", "slack", "calendar"] },
20
20
  { "name": "onedrive", "displayName": "OneDrive", "icon": "onedrive.svg", "description": "Access and manage files in Microsoft OneDrive", "auth": { "type": "oauth2", "provider": "microsoft", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token", "scopes": ["Files.Read", "Files.ReadWrite", "Files.Read.All", "Files.ReadWrite.All", "offline_access"], "tokenAuthMethod": "body", "requiredApis": [{ "name": "Microsoft Graph API", "enableUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }] }, "envVars": [{ "name": "MICROSOFT_CLIENT_ID", "description": "Microsoft Azure App Client ID (shared with Outlook/Teams/SharePoint)", "required": true, "sensitive": false, "docsUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }, { "name": "MICROSOFT_CLIENT_SECRET", "description": "Microsoft Azure App Client Secret", "required": true, "sensitive": true, "docsUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }], "tools": [{ "id": "list_files", "name": "List Files", "description": "List files and folders in a OneDrive folder", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/drive/root/children", "params": { "$top": { "type": "number", "in": "query", "description": "Maximum number of items to return", "default": 200 }, "$select": { "type": "string", "in": "query", "description": "Comma-separated fields to return" } } } }, { "id": "search_files", "name": "Search Files", "description": "Search for files and folders in OneDrive by name or content", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/drive/root/search(q='{query}')", "params": { "query": { "type": "string", "in": "path", "description": "Search query", "required": true }, "$top": { "type": "number", "in": "query", "description": "Maximum number of items to return", "default": 200 } } } }, { "id": "upload_file", "name": "Upload File", "description": "Upload or update a file in OneDrive", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://graph.microsoft.com/v1.0/me/drive/items/{parentFolderId}:/{fileName}:/content", "params": { "parentFolderId": { "type": "string", "in": "path", "description": "Parent folder item ID, or root", "default": "root" }, "fileName": { "type": "string", "in": "path", "description": "Name of the file to upload", "required": true } }, "body": { "content": { "type": "string", "description": "File content to upload", "required": true } }, "contentType": "application/octet-stream" } }, { "id": "download_file", "name": "Download File", "description": "Download file content from OneDrive", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/drive/items/{itemId}/content", "params": { "itemId": { "type": "string", "in": "path", "description": "OneDrive file item ID", "required": true } } } }], "prompts": [{ "id": "search_documents", "title": "Search documents", "prompt": "Search for documents in OneDrive and summarize their content.", "category": "productivity", "icon": "search" }, { "id": "list_recent_files", "title": "List recent files", "prompt": "Show me the most recently modified files in my OneDrive.", "category": "productivity", "icon": "document" }, { "id": "organize_files", "title": "Organize files", "prompt": "Help me organize and manage files in my OneDrive storage.", "category": "productivity", "icon": "folder" }, { "id": "backup_file", "title": "Backup a file", "prompt": "Upload and backup a file to my OneDrive storage.", "category": "productivity", "icon": "upload" }], "suggestedWith": ["outlook", "teams", "sharepoint"] },
21
- { "name": "outlook", "displayName": "Microsoft Outlook", "icon": "outlook.svg", "description": "Read, send, and manage Outlook emails", "auth": { "type": "oauth2", "provider": "microsoft", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token", "scopes": ["Mail.Read", "Mail.Send", "Mail.ReadWrite", "offline_access"], "tokenAuthMethod": "body", "requiredApis": [{ "name": "Microsoft Graph API", "enableUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }] }, "envVars": [{ "name": "MICROSOFT_CLIENT_ID", "description": "Microsoft Azure App Client ID (Application ID)", "required": true, "sensitive": false, "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }, { "name": "MICROSOFT_CLIENT_SECRET", "description": "Microsoft Azure App Client Secret", "required": true, "sensitive": true, "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }], "tools": [{ "id": "list_emails", "name": "List Emails", "description": "List recent emails from inbox or a specific folder", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/mailFolders/{folderId}/messages", "params": { "folderId": { "type": "string", "in": "path", "description": "Mail folder ID or well-known name", "required": true, "default": "inbox" }, "$top": { "type": "number", "in": "query", "description": "Maximum messages to return", "default": 25 }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" }, "$orderby": { "type": "string", "in": "query", "description": "Sort expression", "default": "receivedDateTime desc" }, "$filter": { "type": "string", "in": "query", "description": "OData filter expression" } }, "response": { "transform": "value" } } }, { "id": "get_email", "name": "Get Email", "description": "Get detailed information about a specific email", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/messages/{messageId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Microsoft Graph message ID", "required": true }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" } } } }, { "id": "send_email", "name": "Send Email", "description": "Send a new email message", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://graph.microsoft.com/v1.0/me/sendMail", "body": { "message": { "type": "object", "description": "Microsoft Graph message object with subject, body, toRecipients, etc.", "required": true }, "saveToSentItems": { "type": "boolean", "description": "Save sent message to Sent Items", "default": true } } } }, { "id": "search_emails", "name": "Search Emails", "description": "Search emails by query, subject, sender, or date", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/messages", "params": { "$search": { "type": "string", "in": "query", "description": "Search query, e.g. \"subject:roadmap\"", "required": true }, "$top": { "type": "number", "in": "query", "description": "Maximum messages to return", "default": 25 }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" } }, "response": { "transform": "value" } } }, { "id": "list_folders", "name": "List Folders", "description": "List all mail folders in the mailbox", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/mailFolders", "params": { "includeHiddenFolders": { "type": "boolean", "in": "query", "description": "Include hidden folders", "default": false }, "$top": { "type": "number", "in": "query", "description": "Maximum folders to return", "default": 100 } }, "response": { "transform": "value" } } }], "prompts": [{ "id": "check_emails", "title": "Check my emails", "prompt": "List my recent unread emails and summarize the most important ones.", "category": "productivity", "icon": "mail" }, { "id": "search_emails", "title": "Search my emails", "prompt": "Search my emails for specific topics, senders, or date ranges.", "category": "productivity", "icon": "search" }, { "id": "draft_email", "title": "Draft an email", "prompt": "Help me draft a professional email with proper formatting and tone.", "category": "productivity", "icon": "compose" }], "suggestedWith": ["teams", "calendar", "gmail"] },
21
+ { "name": "outlook", "displayName": "Microsoft Outlook", "icon": "outlook.svg", "description": "Read, send, and manage Outlook emails", "auth": { "type": "oauth2", "provider": "microsoft", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token", "scopes": ["Mail.Read", "Mail.Send", "Mail.ReadWrite", "offline_access"], "tokenAuthMethod": "body", "requiredApis": [{ "name": "Microsoft Graph API", "enableUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }] }, "envVars": [{ "name": "MICROSOFT_CLIENT_ID", "description": "Microsoft Azure App Client ID (Application ID)", "required": true, "sensitive": false, "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }, { "name": "MICROSOFT_CLIENT_SECRET", "description": "Microsoft Azure App Client Secret", "required": true, "sensitive": true, "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }], "tools": [{ "id": "list_emails", "name": "List Emails", "description": "List recent emails from inbox or a specific folder", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/mailFolders/{folderId}/messages", "params": { "folderId": { "type": "string", "in": "path", "description": "Mail folder ID or well-known name", "required": true, "default": "inbox" }, "$top": { "type": "number", "in": "query", "description": "Maximum messages to return", "default": 25 }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" }, "$orderby": { "type": "string", "in": "query", "description": "Sort expression", "default": "receivedDateTime desc" }, "$filter": { "type": "string", "in": "query", "description": "OData filter expression" } }, "response": { "transform": "value", "historicalSummary": { "collectionKeys": ["value", "data", "messages"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "conversationId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "toRecipients", "kind": "contact-array" }, { "name": "subject" }, { "name": "receivedDateTime" }, { "name": "sentDateTime" }, { "name": "bodyPreview", "maxLength": 300 }, { "name": "categories", "kind": "string-array" }, { "name": "isRead" }, { "name": "importance" }, { "name": "hasAttachments" }], "outputFields": [{ "name": "@odata.nextLink" }, { "name": "@odata.count" }], "omitted": "large email bodies and provider-specific message fields" } } } }, { "id": "get_email", "name": "Get Email", "description": "Get detailed information about a specific email", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/messages/{messageId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Microsoft Graph message ID", "required": true }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" } } } }, { "id": "send_email", "name": "Send Email", "description": "Send a new email message", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://graph.microsoft.com/v1.0/me/sendMail", "body": { "message": { "type": "object", "description": "Microsoft Graph message object with subject, body, toRecipients, etc.", "required": true }, "saveToSentItems": { "type": "boolean", "description": "Save sent message to Sent Items", "default": true } } } }, { "id": "search_emails", "name": "Search Emails", "description": "Search emails by query, subject, sender, or date", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/messages", "params": { "$search": { "type": "string", "in": "query", "description": "Search query, e.g. \"subject:roadmap\"", "required": true }, "$top": { "type": "number", "in": "query", "description": "Maximum messages to return", "default": 25 }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" } }, "response": { "transform": "value", "historicalSummary": { "collectionKeys": ["value", "data", "messages"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "conversationId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "toRecipients", "kind": "contact-array" }, { "name": "subject" }, { "name": "receivedDateTime" }, { "name": "sentDateTime" }, { "name": "bodyPreview", "maxLength": 300 }, { "name": "categories", "kind": "string-array" }, { "name": "isRead" }, { "name": "importance" }, { "name": "hasAttachments" }], "outputFields": [{ "name": "@odata.nextLink" }, { "name": "@odata.count" }], "omitted": "large email bodies and provider-specific message fields" } } } }, { "id": "list_folders", "name": "List Folders", "description": "List all mail folders in the mailbox", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/mailFolders", "params": { "includeHiddenFolders": { "type": "boolean", "in": "query", "description": "Include hidden folders", "default": false }, "$top": { "type": "number", "in": "query", "description": "Maximum folders to return", "default": 100 } }, "response": { "transform": "value" } } }], "prompts": [{ "id": "check_emails", "title": "Check my emails", "prompt": "List my recent unread emails and summarize the most important ones.", "category": "productivity", "icon": "mail" }, { "id": "search_emails", "title": "Search my emails", "prompt": "Search my emails for specific topics, senders, or date ranges.", "category": "productivity", "icon": "search" }, { "id": "draft_email", "title": "Draft an email", "prompt": "Help me draft a professional email with proper formatting and tone.", "category": "productivity", "icon": "compose" }], "suggestedWith": ["teams", "calendar", "gmail"] },
22
22
  { "name": "posthog", "displayName": "PostHog", "icon": "posthog.svg", "description": "Access analytics, feature flags, and user insights from PostHog", "auth": { "type": "api-key", "requiredApis": [{ "name": "PostHog API", "enableUrl": "https://app.posthog.com/project/settings" }], "keyName": "POSTHOG_API_KEY", "headerName": "Authorization", "headerPrefix": "Bearer" }, "envVars": [{ "name": "POSTHOG_API_KEY", "description": "PostHog Personal API Key", "required": true, "sensitive": true, "docsUrl": "https://posthog.com/docs/api/overview" }, { "name": "POSTHOG_HOST", "description": "PostHog API host (defaults to https://app.posthog.com)", "required": false, "sensitive": false, "docsUrl": "https://posthog.com/docs/self-host" }], "tools": [{ "id": "get_trends", "name": "Get Trends", "description": "Retrieve event trends and analytics data", "requiresWrite": false }, { "id": "list_feature_flags", "name": "List Feature Flags", "description": "List all feature flags in your PostHog project", "requiresWrite": false }, { "id": "list_persons", "name": "List Persons", "description": "List persons/users tracked in PostHog", "requiresWrite": false }, { "id": "capture_event", "name": "Capture Event", "description": "Track a custom event in PostHog", "requiresWrite": true }], "prompts": [{ "id": "trend_analysis", "title": "Trend analysis", "prompt": "Show me the trends for key events in my PostHog project over the last 7 days.", "category": "analytics", "icon": "chart" }, { "id": "feature_flag_status", "title": "Feature flag status", "prompt": "List all active feature flags and their current rollout status.", "category": "analytics", "icon": "flag" }, { "id": "user_insights", "title": "User insights", "prompt": "Give me insights about recent user activity and top users in my PostHog project.", "category": "analytics", "icon": "users" }], "suggestedWith": ["slack", "analytics", "monitoring"] },
23
23
  { "name": "salesforce", "displayName": "Salesforce", "icon": "salesforce.svg", "description": "Manage accounts, contacts, opportunities, and leads in your Salesforce CRM", "auth": { "type": "oauth2", "provider": "salesforce", "authorizationUrl": "https://login.salesforce.com/services/oauth2/authorize", "tokenUrl": "https://login.salesforce.com/services/oauth2/token", "scopes": ["api", "refresh_token", "offline_access"], "tokenAuthMethod": "request_body", "requiredApis": [{ "name": "Salesforce Connected App", "enableUrl": "https://login.salesforce.com/" }] }, "envVars": [{ "name": "SALESFORCE_CLIENT_ID", "description": "Salesforce OAuth Consumer Key (from your Connected App)", "required": true, "sensitive": false, "docsUrl": "https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm" }, { "name": "SALESFORCE_CLIENT_SECRET", "description": "Salesforce OAuth Consumer Secret", "required": true, "sensitive": true, "docsUrl": "https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm" }], "tools": [{ "id": "list_accounts", "name": "List Accounts", "description": "List accounts from your Salesforce CRM", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/query", "params": { "q": { "type": "string", "in": "query", "description": "SOQL query for accounts", "default": "SELECT Id, Name, Type, Industry, Phone, Website FROM Account ORDER BY LastModifiedDate DESC LIMIT 50" } }, "response": { "transform": "records" } } }, { "id": "get_account", "name": "Get Account", "description": "Get detailed information about a specific account", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/sobjects/Account/{accountId}", "params": { "accountId": { "type": "string", "in": "path", "description": "Salesforce Account ID", "required": true } } } }, { "id": "list_contacts", "name": "List Contacts", "description": "List contacts from your Salesforce CRM", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/query", "params": { "q": { "type": "string", "in": "query", "description": "SOQL query for contacts", "default": "SELECT Id, FirstName, LastName, Email, Phone, AccountId FROM Contact ORDER BY LastModifiedDate DESC LIMIT 50" } }, "response": { "transform": "records" } } }, { "id": "list_opportunities", "name": "List Opportunities", "description": "List sales opportunities from your Salesforce CRM", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/query", "params": { "q": { "type": "string", "in": "query", "description": "SOQL query for opportunities", "default": "SELECT Id, Name, StageName, Amount, CloseDate, AccountId FROM Opportunity ORDER BY CloseDate DESC LIMIT 50" } }, "response": { "transform": "records" } } }, { "id": "create_lead", "name": "Create Lead", "description": "Create a new lead in Salesforce CRM", "requiresWrite": true, "endpoint": { "method": "POST", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/sobjects/Lead", "body": { "LastName": { "type": "string", "description": "Lead last name", "required": true }, "Company": { "type": "string", "description": "Lead company", "required": true }, "FirstName": { "type": "string", "description": "Lead first name" }, "Email": { "type": "string", "description": "Lead email address" }, "Phone": { "type": "string", "description": "Lead phone number" }, "Status": { "type": "string", "description": "Lead status" } } } }], "prompts": [{ "id": "find_accounts", "title": "Find accounts", "prompt": "Search for accounts in my Salesforce CRM and show me their key information.", "category": "crm", "icon": "search" }, { "id": "create_lead", "title": "Create a lead", "prompt": "Create a new lead in Salesforce CRM with the information I provide.", "category": "crm", "icon": "plus" }, { "id": "pipeline_summary", "title": "Pipeline summary", "prompt": "Show me a summary of my current sales opportunities and pipeline status.", "category": "crm", "icon": "chart" }, { "id": "contact_lookup", "title": "Contact lookup", "prompt": "Find and display information about specific contacts in my Salesforce CRM.", "category": "crm", "icon": "user" }], "suggestedWith": ["gmail", "slack", "calendar"] },
24
24
  { "name": "sentry", "displayName": "Sentry", "icon": "sentry.svg", "description": "Monitor errors, track issues, and manage Sentry projects", "auth": { "type": "oauth2", "provider": "sentry", "authorizationUrl": "https://sentry.io/oauth/authorize/", "tokenUrl": "https://sentry.io/oauth/token/", "scopes": ["org:read", "project:read", "event:read", "event:write"], "tokenAuthMethod": "none", "pkce": true, "supportsRefreshToken": true, "requiredApis": [{ "name": "Sentry OAuth Application", "enableUrl": "https://sentry.io/settings/account/api/applications/" }] }, "envVars": [{ "name": "SENTRY_CLIENT_ID", "description": "Sentry OAuth Client ID from your public OAuth application", "required": true, "sensitive": false, "docsUrl": "https://docs.sentry.io/api/auth/" }, { "name": "SENTRY_ORG", "description": "Default Sentry organization slug for prompts that do not specify one", "required": false, "sensitive": false, "docsUrl": "https://docs.sentry.io/api/organizations/" }], "tools": [{ "id": "list_organizations", "name": "List Organizations", "description": "List Sentry organizations available to the authenticated user so agents can discover organization slugs before project or issue calls", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/organizations/", "params": { "owner": { "type": "boolean", "in": "query", "description": "Restrict results to organizations where the authenticated user is an owner" }, "query": { "type": "string", "in": "query", "description": "Filter organizations by name, slug, status, id, email, or member id" }, "cursor": { "type": "string", "in": "query", "description": "Pagination cursor" } } } }, { "id": "list_projects", "name": "List Projects", "description": "List Sentry projects for an organization", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/organizations/{organizationSlug}/projects/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "cursor": { "type": "string", "in": "query", "description": "Pagination cursor" } } } }, { "id": "list_issues", "name": "List Issues", "description": "List Sentry issues for a project", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/projects/{organizationSlug}/{projectSlug}/issues/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "projectSlug": { "type": "string", "in": "path", "description": "Sentry project slug", "required": true }, "query": { "type": "string", "in": "query", "description": "Sentry issue search query, for example is:unresolved" }, "statsPeriod": { "type": "string", "in": "query", "description": "Stats period, for example 24h, 14d, or 30d" }, "limit": { "type": "number", "in": "query", "description": "Maximum number of issues to return" }, "cursor": { "type": "string", "in": "query", "description": "Pagination cursor" } } } }, { "id": "get_issue", "name": "Get Issue", "description": "Get details for a Sentry issue", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/organizations/{organizationSlug}/issues/{issueId}/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "issueId": { "type": "string", "in": "path", "description": "Sentry issue ID", "required": true }, "collapse": { "type": "string[]", "in": "query", "description": "Optional response sections to collapse" } } } }, { "id": "resolve_issue", "name": "Resolve Issue", "description": "Resolve a Sentry issue", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://sentry.io/api/0/organizations/{organizationSlug}/issues/{issueId}/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "issueId": { "type": "string", "in": "path", "description": "Sentry issue ID", "required": true } }, "body": { "status": { "type": "string", "description": "New issue status", "default": "resolved" }, "statusDetails": { "type": "object", "description": "Optional Sentry status details" } } } }], "prompts": [{ "id": "check_errors", "title": "Check recent errors", "prompt": "Show me recent errors and issues in my Sentry projects and help me prioritize which ones to fix.", "category": "development", "icon": "alert-triangle" }, { "id": "analyze_issue", "title": "Analyze an issue", "prompt": "Help me analyze a specific Sentry issue, understand its root cause, and suggest a fix.", "category": "development", "icon": "bug" }, { "id": "project_health", "title": "Project health check", "prompt": "Give me an overview of the health of my Sentry projects, including error rates and trending issues.", "category": "analytics", "icon": "activity" }], "suggestedWith": ["github", "slack", "linear"], "category": "development" },
@@ -0,0 +1,3 @@
1
+ import type { IntegrationEndpointHistoricalSummary } from "./schema.js";
2
+ export declare const historicalToolSummaries: Record<string, IntegrationEndpointHistoricalSummary>;
3
+ //# sourceMappingURL=_tool_summaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_tool_summaries.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/_tool_summaries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAExE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,oCAAoC,CAKxF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const historicalToolSummaries = {
2
+ "gmail__list_emails": { "collectionKeys": ["messages", "data"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "threadId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "to" }, { "name": "subject" }, { "name": "date" }, { "name": "internalDate" }, { "name": "snippet", "maxLength": 300 }, { "name": "labelIds", "kind": "string-array" }, { "name": "isUnread" }, { "name": "unread" }], "outputFields": [{ "name": "nextPageToken" }, { "name": "resultSizeEstimate" }], "omitted": "large email bodies and provider-specific payload fields" },
3
+ "gmail__search_emails": { "collectionKeys": ["messages", "data"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "threadId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "to" }, { "name": "subject" }, { "name": "date" }, { "name": "internalDate" }, { "name": "snippet", "maxLength": 300 }, { "name": "labelIds", "kind": "string-array" }, { "name": "isUnread" }, { "name": "unread" }], "outputFields": [{ "name": "nextPageToken" }, { "name": "resultSizeEstimate" }], "omitted": "large email bodies and provider-specific payload fields" },
4
+ "outlook__list_emails": { "collectionKeys": ["value", "data", "messages"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "conversationId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "toRecipients", "kind": "contact-array" }, { "name": "subject" }, { "name": "receivedDateTime" }, { "name": "sentDateTime" }, { "name": "bodyPreview", "maxLength": 300 }, { "name": "categories", "kind": "string-array" }, { "name": "isRead" }, { "name": "importance" }, { "name": "hasAttachments" }], "outputFields": [{ "name": "@odata.nextLink" }, { "name": "@odata.count" }], "omitted": "large email bodies and provider-specific message fields" },
5
+ "outlook__search_emails": { "collectionKeys": ["value", "data", "messages"], "collectionName": "messages", "itemFields": [{ "name": "id" }, { "name": "conversationId" }, { "name": "from", "kind": "contact" }, { "name": "sender", "kind": "contact" }, { "name": "toRecipients", "kind": "contact-array" }, { "name": "subject" }, { "name": "receivedDateTime" }, { "name": "sentDateTime" }, { "name": "bodyPreview", "maxLength": 300 }, { "name": "categories", "kind": "string-array" }, { "name": "isRead" }, { "name": "importance" }, { "name": "hasAttachments" }], "outputFields": [{ "name": "@odata.nextLink" }, { "name": "@odata.count" }], "omitted": "large email bodies and provider-specific message fields" },
6
+ };
@@ -18,8 +18,8 @@
18
18
  * ```
19
19
  */
20
20
  import "../../_dnt.polyfills.js";
21
- export type { EnvVarConfig, IntegrationConfig, IntegrationName, IntegrationPrompt, IntegrationToolMeta, OAuthConfig, OAuthField, } from "./schema.js";
22
- export { EnvVarSchema, IntegrationConfigSchema, IntegrationNameSchema, IntegrationPromptSchema, IntegrationToolSchema, OAuthConfigSchema, OAuthFieldSchema, } from "./schema.js";
21
+ export type { EnvVarConfig, IntegrationConfig, IntegrationEndpointHistoricalSummary, IntegrationName, IntegrationPrompt, IntegrationToolMeta, OAuthConfig, OAuthField, } from "./schema.js";
22
+ export { EnvVarSchema, IntegrationConfigSchema, IntegrationEndpointHistoricalSummarySchema, IntegrationNameSchema, IntegrationPromptSchema, IntegrationToolSchema, OAuthConfigSchema, OAuthFieldSchema, } from "./schema.js";
23
23
  import type { IntegrationConfig, IntegrationName } from "./schema.js";
24
24
  /** Return connector. */
25
25
  export declare function getConnector(name: IntegrationName | string): IntegrationConfig | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAItE,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAG1F;AAED,uBAAuB;AACvB,wBAAgB,cAAc,IAAI,SAAS,iBAAiB,EAAE,CAE7D;AAED,8BAA8B;AAC9B,wBAAgB,iBAAiB,IAAI,SAAS,MAAM,EAAE,CAErD;AAED,mBAAmB;AACnB,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAGD,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,oCAAoC,EACpC,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,0CAA0C,EAC1C,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAItE,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAG1F;AAED,uBAAuB;AACvB,wBAAgB,cAAc,IAAI,SAAS,iBAAiB,EAAE,CAE7D;AAED,8BAA8B;AAC9B,wBAAgB,iBAAiB,IAAI,SAAS,MAAM,EAAE,CAErD;AAED,mBAAmB;AACnB,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAGD,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -18,7 +18,7 @@
18
18
  * ```
19
19
  */
20
20
  import "../../_dnt.polyfills.js";
21
- export { EnvVarSchema, IntegrationConfigSchema, IntegrationNameSchema, IntegrationPromptSchema, IntegrationToolSchema, OAuthConfigSchema, OAuthFieldSchema, } from "./schema.js";
21
+ export { EnvVarSchema, IntegrationConfigSchema, IntegrationEndpointHistoricalSummarySchema, IntegrationNameSchema, IntegrationPromptSchema, IntegrationToolSchema, OAuthConfigSchema, OAuthFieldSchema, } from "./schema.js";
22
22
  import { connectors, icons } from "./_data.js";
23
23
  import { filterVisibleIntegrations, isVisibleIntegration } from "./feature-flags.js";
24
24
  const iconMap = new Map(Object.entries(icons));
@@ -1,7 +1,7 @@
1
1
  import type { InferSchema } from "../extensions/schema/index.js";
2
- export declare const getIntegrationNameSchema: () => import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
2
+ export declare const getIntegrationNameSchema: () => import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "gmail" | "slack" | "calendar" | "jira" | "notion" | "servicenow" | "confluence" | "gitlab" | "outlook" | "teams" | "figma" | "sheets" | "airtable" | "supabase" | "neon" | "sharepoint" | "stripe" | "salesforce" | "onedrive" | "bitbucket" | "sentry" | "posthog" | "zendesk" | "asana" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "drive" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
3
3
  /** Zod schema for integration name. */
4
- export declare const IntegrationNameSchema: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
4
+ export declare const IntegrationNameSchema: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "gmail" | "slack" | "calendar" | "jira" | "notion" | "servicenow" | "confluence" | "gitlab" | "outlook" | "teams" | "figma" | "sheets" | "airtable" | "supabase" | "neon" | "sharepoint" | "stripe" | "salesforce" | "onedrive" | "bitbucket" | "sentry" | "posthog" | "zendesk" | "asana" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "drive" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
5
5
  export declare const getEnvVarSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
6
6
  name: import("../internal-agents/schema.js").Schema<string>;
7
7
  description: import("../internal-agents/schema.js").Schema<string>;
@@ -149,6 +149,46 @@ export declare const IntegrationEndpointResponseEnrichmentSchema: import("../int
149
149
  metadataHeaders: import("../internal-agents/schema.js").Schema<string[] | undefined>;
150
150
  maxItems: import("../internal-agents/schema.js").Schema<number | undefined>;
151
151
  }>>;
152
+ export declare const getIntegrationEndpointHistoricalSummaryFieldSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
153
+ name: import("../internal-agents/schema.js").Schema<string>;
154
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
155
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
156
+ }>>;
157
+ export declare const IntegrationEndpointHistoricalSummaryFieldSchema: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
158
+ name: import("../internal-agents/schema.js").Schema<string>;
159
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
160
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
161
+ }>>;
162
+ export declare const getIntegrationEndpointHistoricalSummarySchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
163
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
164
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
165
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
166
+ name: import("../internal-agents/schema.js").Schema<string>;
167
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
168
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
169
+ }>[]>;
170
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
171
+ name: import("../internal-agents/schema.js").Schema<string>;
172
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
173
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
174
+ }>[] | undefined>;
175
+ omitted: import("../internal-agents/schema.js").Schema<string>;
176
+ }>>;
177
+ export declare const IntegrationEndpointHistoricalSummarySchema: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
178
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
179
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
180
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
181
+ name: import("../internal-agents/schema.js").Schema<string>;
182
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
183
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
184
+ }>[]>;
185
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
186
+ name: import("../internal-agents/schema.js").Schema<string>;
187
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
188
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
189
+ }>[] | undefined>;
190
+ omitted: import("../internal-agents/schema.js").Schema<string>;
191
+ }>>;
152
192
  export declare const getIntegrationEndpointSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
153
193
  type: import("../internal-agents/schema.js").Schema<string | undefined>;
154
194
  method: import("../internal-agents/schema.js").Schema<string>;
@@ -177,6 +217,21 @@ export declare const getIntegrationEndpointSchema: () => import("../internal-age
177
217
  metadataHeaders: import("../internal-agents/schema.js").Schema<string[] | undefined>;
178
218
  maxItems: import("../internal-agents/schema.js").Schema<number | undefined>;
179
219
  }> | undefined>;
220
+ historicalSummary: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
221
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
222
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
223
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
224
+ name: import("../internal-agents/schema.js").Schema<string>;
225
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
226
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
227
+ }>[]>;
228
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
229
+ name: import("../internal-agents/schema.js").Schema<string>;
230
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
231
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
232
+ }>[] | undefined>;
233
+ omitted: import("../internal-agents/schema.js").Schema<string>;
234
+ }> | undefined>;
180
235
  }> | undefined>;
181
236
  }>>;
182
237
  export declare const IntegrationEndpointSchema: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
@@ -207,6 +262,21 @@ export declare const IntegrationEndpointSchema: import("../internal-agents/schem
207
262
  metadataHeaders: import("../internal-agents/schema.js").Schema<string[] | undefined>;
208
263
  maxItems: import("../internal-agents/schema.js").Schema<number | undefined>;
209
264
  }> | undefined>;
265
+ historicalSummary: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
266
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
267
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
268
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
269
+ name: import("../internal-agents/schema.js").Schema<string>;
270
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
271
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
272
+ }>[]>;
273
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
274
+ name: import("../internal-agents/schema.js").Schema<string>;
275
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
276
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
277
+ }>[] | undefined>;
278
+ omitted: import("../internal-agents/schema.js").Schema<string>;
279
+ }> | undefined>;
210
280
  }> | undefined>;
211
281
  }>>;
212
282
  export declare const getIntegrationToolSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
@@ -243,6 +313,21 @@ export declare const getIntegrationToolSchema: () => import("../internal-agents/
243
313
  metadataHeaders: import("../internal-agents/schema.js").Schema<string[] | undefined>;
244
314
  maxItems: import("../internal-agents/schema.js").Schema<number | undefined>;
245
315
  }> | undefined>;
316
+ historicalSummary: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
317
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
318
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
319
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
320
+ name: import("../internal-agents/schema.js").Schema<string>;
321
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
322
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
323
+ }>[]>;
324
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
325
+ name: import("../internal-agents/schema.js").Schema<string>;
326
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
327
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
328
+ }>[] | undefined>;
329
+ omitted: import("../internal-agents/schema.js").Schema<string>;
330
+ }> | undefined>;
246
331
  }> | undefined>;
247
332
  }> | undefined>;
248
333
  }>>;
@@ -281,6 +366,21 @@ export declare const IntegrationToolSchema: import("../internal-agents/schema.js
281
366
  metadataHeaders: import("../internal-agents/schema.js").Schema<string[] | undefined>;
282
367
  maxItems: import("../internal-agents/schema.js").Schema<number | undefined>;
283
368
  }> | undefined>;
369
+ historicalSummary: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
370
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
371
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
372
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
373
+ name: import("../internal-agents/schema.js").Schema<string>;
374
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
375
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
376
+ }>[]>;
377
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
378
+ name: import("../internal-agents/schema.js").Schema<string>;
379
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
380
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
381
+ }>[] | undefined>;
382
+ omitted: import("../internal-agents/schema.js").Schema<string>;
383
+ }> | undefined>;
284
384
  }> | undefined>;
285
385
  }> | undefined>;
286
386
  }>>;
@@ -300,7 +400,7 @@ export declare const IntegrationPromptSchema: import("../internal-agents/schema.
300
400
  icon: import("../internal-agents/schema.js").Schema<string | undefined>;
301
401
  }>>;
302
402
  export declare const getIntegrationConfigSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
303
- name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
403
+ name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "gmail" | "slack" | "calendar" | "jira" | "notion" | "servicenow" | "confluence" | "gitlab" | "outlook" | "teams" | "figma" | "sheets" | "airtable" | "supabase" | "neon" | "sharepoint" | "stripe" | "salesforce" | "onedrive" | "bitbucket" | "sentry" | "posthog" | "zendesk" | "asana" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "drive" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
304
404
  displayName: import("../internal-agents/schema.js").Schema<string>;
305
405
  icon: import("../internal-agents/schema.js").Schema<string | undefined>;
306
406
  description: import("../internal-agents/schema.js").Schema<string>;
@@ -390,6 +490,21 @@ export declare const getIntegrationConfigSchema: () => import("../internal-agent
390
490
  metadataHeaders: import("../internal-agents/schema.js").Schema<string[] | undefined>;
391
491
  maxItems: import("../internal-agents/schema.js").Schema<number | undefined>;
392
492
  }> | undefined>;
493
+ historicalSummary: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
494
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
495
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
496
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
497
+ name: import("../internal-agents/schema.js").Schema<string>;
498
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
499
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
500
+ }>[]>;
501
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
502
+ name: import("../internal-agents/schema.js").Schema<string>;
503
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
504
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
505
+ }>[] | undefined>;
506
+ omitted: import("../internal-agents/schema.js").Schema<string>;
507
+ }> | undefined>;
393
508
  }> | undefined>;
394
509
  }> | undefined>;
395
510
  }>[]>;
@@ -406,7 +521,7 @@ export declare const getIntegrationConfigSchema: () => import("../internal-agent
406
521
  }>>;
407
522
  /** Zod schema for integration config. */
408
523
  export declare const IntegrationConfigSchema: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
409
- name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
524
+ name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "gmail" | "slack" | "calendar" | "jira" | "notion" | "servicenow" | "confluence" | "gitlab" | "outlook" | "teams" | "figma" | "sheets" | "airtable" | "supabase" | "neon" | "sharepoint" | "stripe" | "salesforce" | "onedrive" | "bitbucket" | "sentry" | "posthog" | "zendesk" | "asana" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "drive" | "docs-google" | "snowflake" | "mixpanel" | "twilio" | "aws">;
410
525
  displayName: import("../internal-agents/schema.js").Schema<string>;
411
526
  icon: import("../internal-agents/schema.js").Schema<string | undefined>;
412
527
  description: import("../internal-agents/schema.js").Schema<string>;
@@ -496,6 +611,21 @@ export declare const IntegrationConfigSchema: import("../internal-agents/schema.
496
611
  metadataHeaders: import("../internal-agents/schema.js").Schema<string[] | undefined>;
497
612
  maxItems: import("../internal-agents/schema.js").Schema<number | undefined>;
498
613
  }> | undefined>;
614
+ historicalSummary: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
615
+ collectionKeys: import("../internal-agents/schema.js").Schema<string[]>;
616
+ collectionName: import("../internal-agents/schema.js").Schema<string>;
617
+ itemFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
618
+ name: import("../internal-agents/schema.js").Schema<string>;
619
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
620
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
621
+ }>[]>;
622
+ outputFields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
623
+ name: import("../internal-agents/schema.js").Schema<string>;
624
+ kind: import("../internal-agents/schema.js").Schema<string | undefined>;
625
+ maxLength: import("../internal-agents/schema.js").Schema<number | undefined>;
626
+ }>[] | undefined>;
627
+ omitted: import("../internal-agents/schema.js").Schema<string>;
628
+ }> | undefined>;
499
629
  }> | undefined>;
500
630
  }> | undefined>;
501
631
  }>[]>;
@@ -520,6 +650,8 @@ export type OAuthField = InferSchema<ReturnType<typeof getOAuthFieldSchema>>;
520
650
  export type OAuthConfig = InferSchema<ReturnType<typeof getOAuthConfigSchema>>;
521
651
  /** Public API contract for integration tool meta. */
522
652
  export type IntegrationToolMeta = InferSchema<ReturnType<typeof getIntegrationToolSchema>>;
653
+ /** Provider-declared summary contract for old tool outputs kept actionable across turns. */
654
+ export type IntegrationEndpointHistoricalSummary = InferSchema<ReturnType<typeof getIntegrationEndpointHistoricalSummarySchema>>;
523
655
  /** Public API contract for integration prompt. */
524
656
  export type IntegrationPrompt = InferSchema<ReturnType<typeof getIntegrationPromptSchema>>;
525
657
  /** Configuration used by integration. */
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAoDjE,eAAO,MAAM,wBAAwB,imBAAgD,CAAC;AACtF,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,2lBAAuC,CAAC;AAE1E,eAAO,MAAM,eAAe;;;;;;;;GAU3B,CAAC;AACF,8BAA8B;AAC9B,eAAO,MAAM,YAAY;;;;;;;;GAA8B,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;;;;GAS/B,CAAC;AACF,kCAAkC;AAClC,eAAO,MAAM,gBAAgB;;;;;;;GAAkC,CAAC;AAEhE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BhC,CAAC;AACF,mCAAmC;AACnC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAmC,CAAC;AAElE,eAAO,MAAM,iCAAiC;;;;;;GAQ7C,CAAC;AACF,eAAO,MAAM,8BAA8B;;;;;;GAAgD,CAAC;AAE5F,eAAO,MAAM,qCAAqC;;;;;GAOjD,CAAC;AACF,eAAO,MAAM,kCAAkC;;;;;GAAoD,CAAC;AAEpG,eAAO,MAAM,8CAA8C;;;;;;GAQ1D,CAAC;AACF,eAAO,MAAM,2CAA2C;;;;;;GAEvD,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAcxC,CAAC;AACF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA2C,CAAC;AAElF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GASpC,CAAC;AACF,uCAAuC;AACvC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAuC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;;;GAQtC,CAAC;AACF,yCAAyC;AACzC,eAAO,MAAM,uBAAuB;;;;;;GAAyC,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQnC;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQN,CAAC;AACF,yCAAyC;AACzC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAhBhC;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUsE,CAAC;AAE9E,gDAAgD;AAChD,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AACvF,qCAAqC;AACrC,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC;AAC3E,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;AAC7E,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;AAC/E,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AAC3F,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAC3F,yCAAyC;AACzC,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAoDjE,eAAO,MAAM,wBAAwB,imBAAgD,CAAC;AACtF,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,2lBAAuC,CAAC;AAE1E,eAAO,MAAM,eAAe;;;;;;;;GAU3B,CAAC;AACF,8BAA8B;AAC9B,eAAO,MAAM,YAAY;;;;;;;;GAA8B,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;;;;GAS/B,CAAC;AACF,kCAAkC;AAClC,eAAO,MAAM,gBAAgB;;;;;;;GAAkC,CAAC;AAEhE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BhC,CAAC;AACF,mCAAmC;AACnC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAmC,CAAC;AAElE,eAAO,MAAM,iCAAiC;;;;;;GAQ7C,CAAC;AACF,eAAO,MAAM,8BAA8B;;;;;;GAAgD,CAAC;AAE5F,eAAO,MAAM,qCAAqC;;;;;GAOjD,CAAC;AACF,eAAO,MAAM,kCAAkC;;;;;GAAoD,CAAC;AAEpG,eAAO,MAAM,8CAA8C;;;;;;GAQ1D,CAAC;AACF,eAAO,MAAM,2CAA2C;;;;;;GAEvD,CAAC;AAEF,eAAO,MAAM,kDAAkD;;;;GAM9D,CAAC;AACF,eAAO,MAAM,+CAA+C;;;;GAE3D,CAAC;AAEF,eAAO,MAAM,6CAA6C;;;;;;;;;;;;;;GAQzD,CAAC;AACF,eAAO,MAAM,0CAA0C;;;;;;;;;;;;;;GAEtD,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAexC,CAAC;AACF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA2C,CAAC;AAElF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GASpC,CAAC;AACF,uCAAuC;AACvC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAuC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;;;GAQtC,CAAC;AACF,yCAAyC;AACzC,eAAO,MAAM,uBAAuB;;;;;;GAAyC,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQnC;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQN,CAAC;AACF,yCAAyC;AACzC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAhBhC;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUsE,CAAC;AAE9E,gDAAgD;AAChD,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AACvF,qCAAqC;AACrC,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC;AAC3E,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;AAC7E,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;AAC/E,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AAC3F,4FAA4F;AAC5F,MAAM,MAAM,oCAAoC,GAAG,WAAW,CAC5D,UAAU,CAAC,OAAO,6CAA6C,CAAC,CACjE,CAAC;AACF,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAC3F,yCAAyC;AACzC,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC"}
@@ -123,6 +123,20 @@ export const getIntegrationEndpointResponseEnrichmentSchema = defineSchema((v) =
123
123
  maxItems: v.number().optional(),
124
124
  }));
125
125
  export const IntegrationEndpointResponseEnrichmentSchema = lazySchema(getIntegrationEndpointResponseEnrichmentSchema);
126
+ export const getIntegrationEndpointHistoricalSummaryFieldSchema = defineSchema((v) => v.object({
127
+ name: v.string(),
128
+ kind: v.enum(["scalar", "string-array", "contact", "contact-array"]).optional(),
129
+ maxLength: v.number().optional(),
130
+ }));
131
+ export const IntegrationEndpointHistoricalSummaryFieldSchema = lazySchema(getIntegrationEndpointHistoricalSummaryFieldSchema);
132
+ export const getIntegrationEndpointHistoricalSummarySchema = defineSchema((v) => v.object({
133
+ collectionKeys: v.array(v.string()),
134
+ collectionName: v.string(),
135
+ itemFields: v.array(getIntegrationEndpointHistoricalSummaryFieldSchema()),
136
+ outputFields: v.array(getIntegrationEndpointHistoricalSummaryFieldSchema()).optional(),
137
+ omitted: v.string(),
138
+ }));
139
+ export const IntegrationEndpointHistoricalSummarySchema = lazySchema(getIntegrationEndpointHistoricalSummarySchema);
126
140
  export const getIntegrationEndpointSchema = defineSchema((v) => v.object({
127
141
  type: v.enum(["rest", "graphql"]).optional(),
128
142
  method: v.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]),
@@ -134,6 +148,7 @@ export const getIntegrationEndpointSchema = defineSchema((v) => v.object({
134
148
  response: v.object({
135
149
  transform: v.string().optional(),
136
150
  enrich: getIntegrationEndpointResponseEnrichmentSchema().optional(),
151
+ historicalSummary: getIntegrationEndpointHistoricalSummarySchema().optional(),
137
152
  }).optional(),
138
153
  }));
139
154
  export const IntegrationEndpointSchema = lazySchema(getIntegrationEndpointSchema);
@@ -15,6 +15,19 @@ interface IntegrationEndpointBodyField {
15
15
  description: string;
16
16
  required?: boolean;
17
17
  }
18
+ export type IntegrationHistoricalSummaryFieldKind = "scalar" | "string-array" | "contact" | "contact-array";
19
+ export interface IntegrationHistoricalSummaryField {
20
+ name: string;
21
+ kind?: IntegrationHistoricalSummaryFieldKind;
22
+ maxLength?: number;
23
+ }
24
+ export interface IntegrationHistoricalSummary {
25
+ collection_keys: string[];
26
+ collection_name: string;
27
+ item_fields: IntegrationHistoricalSummaryField[];
28
+ output_fields?: IntegrationHistoricalSummaryField[];
29
+ omitted: string;
30
+ }
18
31
  export interface IntegrationEndpoint {
19
32
  type?: "rest" | "graphql";
20
33
  method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
@@ -32,6 +45,7 @@ export interface IntegrationEndpoint {
32
45
  metadataHeaders?: string[];
33
46
  maxItems?: number;
34
47
  };
48
+ historical_summary?: IntegrationHistoricalSummary;
35
49
  };
36
50
  }
37
51
  /** Public API contract for integration tool. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxE,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,4BAA4B;IACpC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE;YACP,IAAI,EAAE,wBAAwB,CAAC;YAC/B,GAAG,EAAE,MAAM,CAAC;YACZ,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxE,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,4BAA4B;IACpC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,qCAAqC,GAC7C,QAAQ,GACR,cAAc,GACd,SAAS,GACT,eAAe,CAAC;AAEpB,MAAM,WAAW,iCAAiC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,qCAAqC,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,iCAAiC,EAAE,CAAC;IACjD,aAAa,CAAC,EAAE,iCAAiC,EAAE,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE;YACP,IAAI,EAAE,wBAAwB,CAAC;YAC/B,GAAG,EAAE,MAAM,CAAC;YACZ,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,kBAAkB,CAAC,EAAE,4BAA4B,CAAC;KACnD,CAAC;CACH;AAED,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB"}
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.611";
2
+ export declare const VERSION = "0.1.612";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.611";
4
+ export const VERSION = "0.1.612";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.611",
3
+ "version": "0.1.612",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",