{
  "service": "guru",
  "displayName": "Guru",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "GURU_API_TOKEN",
      "description": "Guru API token used as the Basic Auth password. Create or view API tokens from Guru's API settings: https://developer.getguru.com/reference/authentication",
      "extraFields": [
        {
          "key": "username",
          "label": "Username or Collection ID",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "admin@example.com",
          "description": "Guru Basic Auth username. Use your Guru user identifier with a user token, or the collection ID with a collection token: https://developer.getguru.com/reference/authentication"
        }
      ]
    }
  ],
  "homepageUrl": "https://www.getguru.com",
  "actions": [
    {
      "id": "guru.get_card",
      "service": "guru",
      "name": "get_card",
      "description": "Get a Guru card with additional details by card ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "cardId": {
            "type": "string",
            "minLength": 1,
            "description": "The Guru card ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a Guru card."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "card": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Guru object returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting a Guru card."
      }
    },
    {
      "id": "guru.get_current_identity",
      "service": "guru",
      "name": "get_current_identity",
      "description": "Get the Guru user or collection identity for the authenticated API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input parameters for getting the current Guru identity."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "identity": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Guru object returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting the current Guru identity."
      }
    },
    {
      "id": "guru.get_team_stats",
      "service": "guru",
      "name": "get_team_stats",
      "description": "Get Guru trust and card-count statistics for a team.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Guru team ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting Guru team stats."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "teamStats": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Guru object returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting Guru team stats."
      }
    },
    {
      "id": "guru.list_collections",
      "service": "guru",
      "name": "list_collections",
      "description": "List Guru collections visible to the authenticated API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search term for filtering Guru collections."
          },
          "sortField": {
            "type": "string",
            "minLength": 1,
            "description": "Guru collection sort field."
          },
          "sortDir": {
            "type": "string",
            "minLength": 1,
            "description": "Guru collection sort order."
          },
          "filter": {
            "type": "string",
            "minLength": 1,
            "description": "Guru collection filter expression."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Guru collections."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "collections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Guru object returned by the API."
            },
            "description": "Guru collections returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing Guru collections."
      }
    },
    {
      "id": "guru.search_cards",
      "service": "guru",
      "name": "search_cards",
      "description": "Search Guru cards visible to the authenticated API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "The Guru Query Language string to search with."
          },
          "searchTerms": {
            "type": "string",
            "minLength": 1,
            "description": "Search terms to pass to Guru."
          },
          "queryType": {
            "type": "string",
            "enum": [
              "cards",
              "questions",
              "archived",
              "draft",
              "legacy",
              "search_cards"
            ],
            "description": "The Guru search query type."
          },
          "showArchived": {
            "type": "boolean",
            "description": "Whether to include archived cards in search results."
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of cards to return, up to 50."
          },
          "sortField": {
            "type": "string",
            "enum": [
              "lastModified",
              "lastModifiedBy",
              "boardCount",
              "verificationState",
              "copyCount",
              "viewCount",
              "favoriteCount",
              "followerCount",
              "dateCreated",
              "verificationInterval",
              "verifier",
              "owner",
              "originalOwner",
              "lastVerifiedBy",
              "lastVerified",
              "verificationReason",
              "popularity",
              "unverifiedViewsCopies",
              "nextVerificationDate",
              "collection",
              "title",
              "followedDate",
              "pendingAutoArchive",
              "relevancy"
            ],
            "description": "The Guru card search sort field."
          },
          "sortOrder": {
            "type": "string",
            "enum": [
              "ASC",
              "DESC"
            ],
            "description": "The Guru sort order."
          },
          "includeCardAttributes": {
            "type": "boolean",
            "description": "Whether Guru should include card attributes."
          },
          "token": {
            "type": "string",
            "minLength": 1,
            "description": "Paging token returned by a previous Guru Link header."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for searching Guru cards."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "cards": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Guru object returned by the API."
            },
            "description": "Guru cards returned for the search."
          },
          "links": {
            "type": "object",
            "properties": {
              "next": {
                "type": "string",
                "description": "The URL for the next page of results.",
                "format": "uri"
              },
              "previous": {
                "type": "string",
                "description": "The URL for the previous page of results.",
                "format": "uri"
              },
              "nextToken": {
                "type": "string",
                "description": "The next-page token parsed from the next link URL."
              },
              "previousToken": {
                "type": "string",
                "description": "The previous-page token parsed from the previous link URL."
              }
            },
            "additionalProperties": true,
            "description": "Pagination links parsed from the Guru Link response header."
          }
        },
        "additionalProperties": false,
        "required": [
          "cards"
        ],
        "description": "The response returned when searching Guru cards."
      }
    }
  ]
}
