diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts
index 24cbcc1a51c86..4f4c78ba95622 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts
@@ -317,6 +317,13 @@ describe('autocomplete', () => {
     testSuggestions('from index', suggestedIndexes, 6 /* index index in from */);
   });
 
+  describe('show', () => {
+    testSuggestions('show ', ['functions', 'info']);
+    for (const fn of ['functions', 'info']) {
+      testSuggestions(`show ${fn} `, ['|']);
+    }
+  });
+
   describe('where', () => {
     const allEvalFns = getFunctionSignaturesByReturnType('where', 'any', {
       evalMath: true,
diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts
index 65c2401b3bf6a..f3fc734d122bb 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts
@@ -603,6 +603,11 @@ async function getExpressionSuggestionsByType(
             }
           ))
         );
+        if (command.name === 'show') {
+          suggestions.push(
+            ...getBuiltinCompatibleFunctionDefinition(command.name, undefined, 'any')
+          );
+        }
       }
     }
 
diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts
index a7ce90cda409f..a9233a0c834d6 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts
@@ -41,9 +41,10 @@ export const getBuiltinCompatibleFunctionDefinition = (
       !ignoreAsSuggestion &&
       !/not_/.test(name) &&
       (option ? supportedOptions?.includes(option) : supportedCommands.includes(command)) &&
-      signatures.some(({ params }) => params.some((pArg) => pArg.type === argType))
+      signatures.some(
+        ({ params }) => !params.length || params.some((pArg) => pArg.type === argType)
+      )
   );
-
   if (!returnTypes) {
     return compatibleFunctions.map(getAutocompleteBuiltinDefinition);
   }
diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts
index b0de434647aee..9fc026852f999 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts
@@ -51,10 +51,11 @@ export function getAutocompleteFunctionDefinition(fn: FunctionDefinition) {
 }
 
 export function getAutocompleteBuiltinDefinition(fn: FunctionDefinition) {
+  const hasArgs = fn.signatures.some(({ params }) => params.length);
   return {
     label: fn.name,
-    insertText: `${fn.name} $0`,
-    insertTextRules: 4, // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
+    insertText: hasArgs ? `${fn.name} $0` : fn.name,
+    ...(hasArgs ? { insertTextRules: 4 } : {}), // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
     kind: 11,
     detail: fn.description,
     documentation: {
diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts
index 004d4ca5ded6b..5295b50b22525 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts
@@ -157,6 +157,23 @@ export function getAstContext(innerText: string, ast: ESQLAst, offset: number) {
       return { type: 'setting' as const, command, node, option, setting };
     }
   }
+  if (!command && innerText.trim().toLowerCase() === 'show') {
+    return {
+      type: 'expression' as const,
+      // The ES grammar makes the "SHOW" command an invalid type at grammar level
+      // so we need to create a fake command to make it work the AST in this case
+      command: {
+        type: 'command',
+        name: 'show',
+        text: innerText.trim(),
+        location: { min: 0, max: innerText.length },
+        incomplete: true,
+        args: [],
+      } as ESQLCommand,
+      node,
+      option,
+    };
+  }
 
   if (!command || (innerText.length <= offset && getLastCharFromTrimmed(innerText) === '|')) {
     //   // ... | <here>
diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts
index cdbffc88efe44..2495111f3a9db 100644
--- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts
+++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts
@@ -488,6 +488,10 @@ describe('validation logic', () => {
     testErrorsAndWarnings('show', ['SyntaxError: expected {SHOW} but found "<EOF>"']);
     testErrorsAndWarnings('show functions', []);
     testErrorsAndWarnings('show info', []);
+    testErrorsAndWarnings('show functions()', [
+      "SyntaxError: token recognition error at: '('",
+      "SyntaxError: token recognition error at: ')'",
+    ]);
     testErrorsAndWarnings('show functions blah', [
       "SyntaxError: token recognition error at: 'b'",
       "SyntaxError: token recognition error at: 'l'",