Skip to content

Return Types

By default, the florentine_ask tool returns an aggregation result for the question provided. However, you can choose between any combination of the following three steps:

  1. Aggregation Generation: The question is converted into a MongoDB aggregation query.
  2. Query Execution: The aggregation runs against the database using the connection string you provided.
  3. Answer Generation: The structured result is transformed into a natural language answer.

Providing Return Types

You have two options to include a returnTypes array:

  • As the RETURN_TYPES env variable in your MCP setup config (possible in static and dynamic mode)
  • As the returnTypes parameter to the florentine_ask tool (possible only in dynamic mode)

Provide as ENV variable

Provide the variable value as a stringified json array:

json
"env": {
  "RETURN_TYPES": "[\"result\"]"
}

Provide as tool parameter

Provide the variable value as a json array:

json
{
  "returnTypes": ["result"]
}

Return Types Configuration

You can choose which of these steps you want returned by specifying a returnTypes array with any combination of:

returnTypes ValueDescriptionExpected Keys in Response
"aggregation"Returns the generated MongoDB aggregation pipeline, the database and collection used and a confidence score on a scale from 0 to 10 on how confident the AI is that the aggregation will answer the question correct.confidence, database, collection, aggregation
"result"Returns the raw query results from the executed aggregation.result
"answer"Returns a natural language response based on the results from the executed aggregation.answer

Example returning all three steps

Imagine a tabletennis collection that records the results of the matches of two players.
Asking the question Who won the last match? with these florentine_ask tool parameters:

json
{
  "question": "Who won the last match?",
  "returnTypes": ["aggregation", "result", "answer"]
}

The response then looks like this:

json
{
  "content": [
    { type: 'text',
      text: '{
        "database": "samples",
        "collection": "tabletennis",
        "aggregation": [
          { "$sort": { "year": -1, "matchInYear": -1 } },
          { "$limit": 1 },
          {
            "$project": {
              "winner": {
                "$cond": {
                  "if": { "$eq": ["$matchwinner", "home"] },
                  "then": "$players.home",
                  "else": "$players.away"
                }
              }
            }
          }
        ],
        "result": [{ "_id": "67d352056d3ef0f2281524cf", "winner": "Frank" }],
        "answer": "Frank won the last match. According to our records, he emerged as the winner, highlighting his strong performance in that game."
      }'
    }
  ],
  "isError": false
}

Please note

The API behind the MCP server only executes the steps neccessary, so i.e. if you only provide aggregation in the returnTypes, the aggregation is not executed and no natural language answer generated, which increases the response time.