Skip to main content
Glama

businessobject-function-test

Execute business object functions with input parameters to test functionality and verify results using real data.

Instructions

#Test a Business Object Function

Execute a business object function with provided input parameters for testing purposes. This allows you to test your functions with real data and see the results.

Common Base Data Type IDs:

  • String: "22ED1F787B6B0926AB0577860AF7543705341C053EB1B4A74E7CC199A0645E52"

  • Integer: "B9B1191E0B70BA0845CF4F6A4F4C017594F8BA84FD2F1849966081D53A8C836D"

  • Boolean: "2788FB5AA776C62635F156C820190D0FD3D558765201881A77382093F7248B39"

  • Date: "06A9841478D7BE17C423F11C38CD6829E372093DBEC144F2A85FC7165BE8CD80"

  • Float: "C09139C72F5A8A7E0036BA66CE301748BD617F463683EE03F92EDAAAA4AF8BC7"

  • Any: "D31053204B4A612390A2D6ECDF623E979C14ADC070A7CB9B08B2099C3011BCAB"

Parameter Usage:

  • Use parameter "name" if no alias is defined

  • Use parameter "alias" instead of name if alias is defined in the function

  • Values must match the expected data type

Error Handling:

  • Wrong BO/function name → 404 error

  • Missing required parameters → 400 error

  • Wrong parameter names → 400/500 error

  • Invalid parameter values → 400/500 error

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
businessObjectNameYes
functionNameYes
inputParametersNoInput parameters for the function

Implementation Reference

  • The handler function for the 'businessobject-function-test' tool. It fetches the function's input parameters, maps provided test values to them, fetches data types, constructs a test request, executes the test via simplifier.testServerBusinessObjectFunction, and formats the success or error response.
    }, async ({ businessObjectName, functionName, inputParameters }) => {
      return wrapToolResult(`test Business Object function ${businessObjectName}.${functionName}`, async () => {
        const boParameters = (await simplifier.getServerBusinessObjectFunction(businessObjectName, functionName)).inputParameters
    
        const testParameters: BusinessObjectTestParameter[]  = await Promise.all(boParameters.map(async cparam => {
          const dataType = await simplifier.getDataTypeByName(cparam.dataType.name)
          return {
            name: cparam.name,
            value: inputParameters.find(p => p.name === cparam.name)?.value,
            dataType: dataType,
            dataTypeId: dataType.id,
            optional: cparam.isOptional,
            transfer: true,
          } satisfies BusinessObjectTestParameter;
        }))
    
        const testRequest: BusinessObjectTestRequest = {
          parameters: testParameters
        };
    
        const trackingKey = trackingToolPrefix + toolNameBusinessObjectFunctionTest
        const result = await simplifier.testServerBusinessObjectFunction(businessObjectName, functionName, testRequest, trackingKey);
    
        // Format the response nicely
        if (result.success) {
          return {
            success: true,
            message: `Function '${functionName}' executed successfully`,
            result: result.result,
            executedWith: {
              businessObject: businessObjectName,
              function: functionName,
              parameters: testParameters.map(p => ({ name: p.name, value: p.value, dataType: p.dataTypeId }))
            }
          };
        } else {
          return {
            success: false,
            message: `Function '${functionName}' execution failed`,
            error: result.error || result.message || "Unknown error",
            executedWith: {
              businessObject: businessObjectName,
              function: functionName,
              parameters: testParameters.map(p => ({ name: p.name, value: p.value, dataType: p.dataTypeId }))
            }
          };
        }
      });
    });
  • Zod input schema for the tool defining parameters: businessObjectName (string), functionName (string), inputParameters (array of {name: string, value: unknown}).
    {
      businessObjectName: z.string(),
      functionName: z.string(),
      inputParameters: z.array(z.object({
        name: z.string().describe("Parameter name (or alias if defined)"),
        value: z.unknown().describe("Parameter value - can be any JSON value"),
      })).optional().default([]).describe("Input parameters for the function")
    },
  • Registration of the tool using McpServer.tool() method, specifying name, description, input schema, hints, and handler function.
    server.tool(toolNameBusinessObjectFunctionTest,
      functionTestDescription,
      {
        businessObjectName: z.string(),
        functionName: z.string(),
        inputParameters: z.array(z.object({
          name: z.string().describe("Parameter name (or alias if defined)"),
          value: z.unknown().describe("Parameter value - can be any JSON value"),
        })).optional().default([]).describe("Input parameters for the function")
      },
      {
        title: "Test a Business Object Function",
        readOnlyHint: true,
        destructiveHint: false,
        idempotentHint: true,
        openWorldHint: false
      }, async ({ businessObjectName, functionName, inputParameters }) => {

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SimplifierIO/simplifier-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server