Skip to main content
Glama

Discover tools

FLOWRA_DISCOVER_TOOLS
Read-onlyIdempotent

Find the exact tool slugs for an app or integration. Returns mainToolSlugs, relatedToolSlugs, per-toolkit hasActiveConnection, a short plan, pitfalls, and notFoundToolkitSlugs. If you already have the exact ACTION slug and only need its input schema, use FLOWRA_GET_TOOL_SCHEMAS instead.

When the result includes a catalog app that covers the job, use that app's tool instead of a generic web search, fetch, or HTTP tool.

Toolkit tools are not direct function calls. Once you have a slug: FLOWRA_GET_TOOL_SCHEMAS for its arguments (or set includeInputSchemas=true here and skip that step), FLOWRA_MANAGE_CONNECTIONS if hasActiveConnection is false, then FLOWRA_MULTI_EXECUTE_TOOL to run it. Use only slugs that came back from this call.

mode "select" (default): queries are one atomic English useCase per item, with the app name in it. Any schedule or recurrence goes in intentSummary only, never in useCase — recurring work is a workflow, not a tool argument. toolkitSlugs pins that app's important tools into candidates. Pass toolkitSlugs, queries, or both — at least one is required. select returns only the tools needed for one action, never a full catalog.

mode "inventory": one page of tools in a known app. Requires toolkitSlugs. Optional query is a whole-word match on slug, name, or description (issue matches issues, not issued; for example query "issue" with toolkitSlugs ["github"]). No selection model and no native Flowra tools unless that toolkit was requested. mainToolSlugs is this page only; relatedToolSlugs is empty. toolSchemas include name and a one-line description. If inventory.truncated is true, call again with the same toolkitSlugs and query and offset=inventory.nextOffset. Do not use the workbench to browse a toolkit catalog.

toolkitSlugs: exact catalog toolkit slugs (lowercase app id such as gmail or github). Do not pass ACTION slugs here (GMAIL_SEND_EMAIL).

Reuse the returned session.id on GET_TOOL_SCHEMAS, MANAGE_CONNECTIONS, and MULTI_EXECUTE_TOOL so auth and workbench state stay on one session.

Input Schema

NameRequiredDescriptionDefault
modeNoselect (default): smallest set of tools for one action. inventory: one page of tools in toolkitSlugs, optional query filter, no selection model. Use inventory to list or search an app catalog (for example GitHub issue tools).
limitNoInventory page size. Default 40, max 50. Ignored in select mode.
queryNoInventory only. Whole-word match on slug, name, or description (issue matches issues, not issued). Omit for the first page of the toolkit. Ignored in select mode.
offsetNoInventory page start. When inventory.truncated is true, pass inventory.nextOffset. Default 0. Ignored in select mode.
queriesNoUse cases to search in parallel. Required in select mode unless toolkitSlugs is set. Ignored in inventory mode.
sessionNoChat: omit. MCP/new: { generate_id: true }. Continue: { id }. Not both.
userMessageYesExact user request (any language)
toolkitSlugsNoExact catalog toolkit slugs (gmail, github). select: pins important tools. inventory: required, lists that app. Not ACTION slugs.
intentSummaryYesOne-sentence intent; include scheduling here if any
includeInputSchemasNoWhen true, toolSchemas include inputSchema so you can skip GET_TOOL_SCHEMAS. Default false

Output Schema

NameRequiredDescriptionDefault
dataNo
errorNoError if any occurred during the execution of the action
messageNo
successfulNoWhether or not the action execution was successful or not

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "data": {
      +      "properties": {
      +        "guidance": {},
      +        "inventory": {
      +          "description": "Set in inventory mode. Omitted in select mode.",
      +          "properties": {
      +            "limit": {},
      +            "nextOffset": {
      +              "anyOf": [
      +                {},
      +                {}
      +              ],
      +              "description": "Pass as offset to continue; null on the last page"
      +            },
      +            "offset": {},
      +            "total": {
      +              "description": "Tools matching toolkitSlugs and query"
      +            },
      +            "truncated": {
      +              "description": "True when another page exists"
      +            }
      +          }
      +        },
      +        "mainToolSlugs": {
      +          "items": {}
      +        },
      +        "notFoundToolkitSlugs": {
      +          "description": "Requested toolkitSlugs that did not resolve",
      +          "items": {}
      +        },
      +        "pitfalls": {
      +          "items": {}
      +        },
      +        "reasoning": {},
      +        "relatedToolSlugs": {
      +          "items": {}
      +        },
      +        "session": {
      +          "properties": {
      +            "id": {},
      +            "instructions": {}
      +          }
      +        },
      +        "timeInfo": {
      +          "properties": {
      +            "currentTime": {},
      +            "message": {}
      +          }
      +        },
      +        "toolSchemas": {
      +          "propertyNames": {}
      +        },
      +        "toolkitConnectionStatuses": {
      +          "items": {
      +            "properties": {
      +              "description": {},
      +              "hasActiveConnection": {},
      +              "message": {},
      +              "toolkit": {}
      +            }
      +          }
      +        },
      +        "toolkits": {
      +          "items": {}
      +        },
      +        "validatedPlan": {
      +          "items": {}
      +        }
      +      }
      +    },
      +    "error": {
      +      "anyOf": [
      +        {},
      +        {}
      +      ],
      +      "description": "Error if any occurred during the execution of the action"
      +    },
      +    "message": {},
      +    "successful": {
      +      "description": "Whether or not the action execution was successful or not"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed5 schema fields changed
    • addedInput schema / allOf
      Added value: +[
      +  {
      +    "else": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "queries"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "toolkitSlugs"
      +          ]
      +        }
      +      ]
      +    },
      +    "if": {
      +      "properties": {
      +        "mode": {
      +          "const": "inventory"
      +        }
      +      },
      +      "required": [
      +        "mode"
      +      ]
      +    },
      +    "then": {
      +      "required": [
      +        "toolkitSlugs"
      +      ]
      +    }
      +  }
      +]
    • addedInput schema / properties / queries / minItems
      Added value: +1
    • changedInput schema / properties / query / description
      Previous value: -"Inventory only. Case-insensitive match on slug, name, or description. Omit for the first page of the toolkit. Ignored in select mode."New value: +"Inventory only. Whole-word match on slug, name, or description (issue matches issues, not issued). Omit for the first page of the toolkit. Ignored in select mode."
    • addedInput schema / properties / toolkitSlugs / minItems
      Added value: +1
    • changedInput schema / required
      Previous value: -[
      -  "userMessage",
      -  "intentSummary",
      -  "includeInputSchemas"
      -]New value: +[
      +  "userMessage",
      +  "intentSummary"
      +]
  3. Changed6 schema fields changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Inventory page size. Default 40, max 50. Ignored in select mode.",
      +  "maximum": 50,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "select (default): smallest set of tools for one action. inventory: one page of tools in toolkitSlugs, optional query filter, no selection model. Use inventory to list or search an app catalog (for example GitHub issue tools).",
      +  "enum": [
      +    "select",
      +    "inventory"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Inventory page start. When inventory.truncated is true, pass inventory.nextOffset. Default 0. Ignored in select mode.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / queries / description
      Previous value: -"Use cases to search in parallel. Required unless toolkitSlugs is set."New value: +"Use cases to search in parallel. Required in select mode unless toolkitSlugs is set. Ignored in inventory mode."
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "Inventory only. Case-insensitive match on slug, name, or description. Omit for the first page of the toolkit. Ignored in select mode.",
      +  "type": "string"
      +}
    • changedInput schema / properties / toolkitSlugs / description
      Previous value: -"Exact catalog toolkit slugs (gmail, slack). Pins important tools from those apps. Not ACTION slugs."New value: +"Exact catalog toolkit slugs (gmail, github). select: pins important tools. inventory: required, lists that app. Not ACTION slugs."
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/non-destructive annotations by disclosing the full result shape, the truncation/nextOffset pagination loop for inventory, that inventory excludes native Flowra tools, and the session-handoff requirement so auth and workbench state persist across calls. These are operational behaviors the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the key routing decision, then organized by mode and by parameter notes; each section is scannable. It is fairly long and some parameter detail (query matching) duplicates the schema, but no sentence is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, mode-branching discovery tool with an output schema, the description supplies everything needed: session continuity rules, the follow-up call chain, pagination handling, and slug-type constraints. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds cross-parameter logic the schema cannot express: select requires toolkitSlugs OR queries, inventory requires toolkitSlugs, schedules belong in intentSummary and never in useCase, and toolkitSlugs must be app ids, not ACTION slugs. It also gives a concrete whole-word match example ('issue' matches 'issues', not 'issued').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Find the exact tool slugs for an app or integration,' and immediately enumerates the return payload (mainToolSlugs, relatedToolSlugs, hasActiveConnection, plan, pitfalls). It explicitly separates itself from the sibling FLOWRA_GET_TOOL_SCHEMAS, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States explicit when/when-not and alternatives: use GET_TOOL_SCHEMAS if you already have the slug and only need a schema; use MANAGE_CONNECTIONS if hasActiveConnection is false; use MULTI_EXECUTE_TOOL to run. Mode guidance (select vs inventory) is spelled out with the condition that selects each, plus 'do not use the workbench to browse a toolkit catalog.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources