+      
 
-      
-        
+      
+        
+          
+            
 
-        
+              
+                Random port:
+              
+
+              
+
+                {getPort()}
+              
+            
+              
+
+              
+            
   );
diff --git a/packages/app/src/modules/tools/definitions/token-generator/token-generator.page.tsx b/packages/app/src/modules/tools/definitions/token-generator/token-generator.page.tsx
index aa896e2d..f8cafada 100644
--- a/packages/app/src/modules/tools/definitions/token-generator/token-generator.page.tsx
+++ b/packages/app/src/modules/tools/definitions/token-generator/token-generator.page.tsx
@@ -1,7 +1,12 @@
+import { CopyButton } from '@/modules/shared/copy/copy-button';
+import { createRefreshableSignal } from '@/modules/shared/signals';
+import { Button } from '@/modules/ui/components/button';
+import { Card, CardContent, CardFooter, CardHeader, CardTitle } from '@/modules/ui/components/card';
 import { Switch, SwitchControl, SwitchLabel, SwitchThumb } from '@/modules/ui/components/switch';
 import { TextArea } from '@/modules/ui/components/textarea';
 import { TextFieldRoot } from '@/modules/ui/components/textfield';
 import { type Component, createSignal } from 'solid-js';
+import { ToolHeader } from '../../components/tool-header';
 import { useCurrentTool } from '../../tools.provider';
 import defaultDictionary from './locales/en.json';
 import { createToken } from './token-generator.models';
@@ -13,57 +18,90 @@ const TokenGeneratorTool: Component = () => {
   const [getUseSpecialCharacters, setUseSpecialCharacters] = createSignal(false);
   const [getLength] = createSignal(64);
 
-  const { t } = useCurrentTool({ defaultDictionary });
+  const { t, getTool } = useCurrentTool({ defaultDictionary });
 
-  const getToken = () => createToken({
+  const [getToken, refreshToken] = createRefreshableSignal(() => createToken({
     withUppercase: getUseUpperCase(),
     withLowercase: getUseLowerCase(),
     withNumbers: getUseNumbers(),
     withSymbols: getUseSpecialCharacters(),
     length: getLength(),
-  });
+  }));
 
   return (
-    
-      
-        
-          
-        
-        
-          {t('uppercase')}
-        
-      
+    
+      
 
-      
-        
-          
-        
-        
-          {t('lowercase')}
-        
-      
+      
+        
+          
+            
+              Configuration
+            
+          
 
-      
-        
-          
-        
-        
-          {t('numbers')}
-        
-      
+          
+            
+              
+                
+              
+              
+                {t('uppercase')}
+              
+            
 
-      
-        
-          
-        
-        
-          {t('symbols')}
-        
-      
+            
+              
+                
+              
+              
+                {t('lowercase')}
+              
+            
 
-      
-        
-      
+            
+              
+                
+              
+              
+                {t('numbers')}
+              
+            
+
+            
+              
+                
+              
+              
+                {t('symbols')}
+              
+            
+          
+
+        
+
+        
+          
+            
+              Your token
+            
+
+            
+              
+
+              
+            
+      
   );
 };
diff --git a/packages/app/src/modules/tools/pages/tool.page.tsx b/packages/app/src/modules/tools/pages/tool.page.tsx
index fdc9e59e..f72db886 100644
--- a/packages/app/src/modules/tools/pages/tool.page.tsx
+++ b/packages/app/src/modules/tools/pages/tool.page.tsx
@@ -7,7 +7,7 @@ import { getToolDefinitionBySlug } from '../tools.registry';
 
 export const ToolPage: Component = () => {
   const params = useParams();
-  const { getLocale } = useI18n();
+  const { getLocale, t } = useI18n();
 
   const toolDefinition = getToolDefinitionBySlug({ slug: params.toolSlug });
   const ToolComponent = lazy(toolDefinition.entryFile);
@@ -25,7 +25,16 @@ export const ToolPage: Component = () => {
   return (
     
       {toolLocaleDict => (
-        
+         ({
+            icon: toolDefinition.icon,
+            dirName: toolDefinition.dirName,
+            createdAt: toolDefinition.createdAt,
+            name: t(`tools.${toolDefinition.slug}.name` as any),
+            description: t(`tools.${toolDefinition.slug}.description` as any),
+          })}
+        >
           
         
       )}
diff --git a/packages/app/src/modules/tools/tools.provider.tsx b/packages/app/src/modules/tools/tools.provider.tsx
index 2667fcf2..aedf92e2 100644
--- a/packages/app/src/modules/tools/tools.provider.tsx
+++ b/packages/app/src/modules/tools/tools.provider.tsx
@@ -1,10 +1,12 @@
 import type { Accessor, ParentComponent } from 'solid-js';
+import type { ToolDefinition } from './tools.types';
 import { flatten, translator } from '@solid-primitives/i18n';
 import { merge } from 'lodash-es';
 import { createContext, useContext } from 'solid-js';
 
 type ToolProviderContext = {
   toolLocaleDict: Accessor>;
+  tool: Accessor & { name: string; description: string }>;
 };
 
 const CurrentToolContext = createContext();
@@ -16,8 +18,11 @@ export function useCurrentTool({ defaultDictionary }: { defaultDictionary: T
     throw new Error('useCurrentTool must be used within a CurrentToolProvider');
   }
 
+  const { toolLocaleDict, tool } = context;
+
   return {
-    t: translator(() => flatten(merge({}, defaultDictionary, context.toolLocaleDict()))),
+    t: translator(() => flatten(merge({}, defaultDictionary, toolLocaleDict()))),
+    getTool: tool,
   };
 }
 
diff --git a/packages/app/src/modules/tools/tools.types.ts b/packages/app/src/modules/tools/tools.types.ts
index 96842a88..49e81a28 100644
--- a/packages/app/src/modules/tools/tools.types.ts
+++ b/packages/app/src/modules/tools/tools.types.ts
@@ -1,3 +1,6 @@
 import type { Flatten, Translator } from '@solid-primitives/i18n';
+import type { defineTool } from './tools.models';
 
 export type ToolI18nFactory = >(args: { defaultDictionary: T }) => { t: Translator> };
+
+export type ToolDefinition = ReturnType;