private void listFunctionDetails(HttpRequest request, Model model, String[] function, Cursor cursor) {
        String compactedFunction = String.join(".", function);
        FunctionEvaluator evaluator = model.evaluatorOf(function);
        cursor.setString("function", compactedFunction);
        cursor.setString("info", baseUrl(request) + model.name() + "/" + compactedFunction);
        cursor.setString("eval", baseUrl(request) + model.name() + "/" + compactedFunction + "/" + EVALUATE);
        Cursor bindings = cursor.setArray("arguments");
        var argTypes = evaluator.function().argumentTypes();
        List<String> argNames = new ArrayList<>(argTypes.keySet());
        Collections.sort(argNames);
        for (String name : argNames) {
            Cursor binding = bindings.addObject();
            binding.setString("name", name);
            binding.setString("type", argTypes.get(name).toString());
        }
    }
A dash in this key ensures it does not collide with feature names
model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java