diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for pms-domain-model
 
+## 0.0.3.0 -- 2025-06-22
+
+* Added file change monitoring for tools-list.json.
+
 ## 0.0.2.0 -- 2025-06-15
 
 * Set stdio encoding to UTF-8.
diff --git a/pms-domain-model.cabal b/pms-domain-model.cabal
--- a/pms-domain-model.cabal
+++ b/pms-domain-model.cabal
@@ -20,7 +20,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            0.0.2.0
+version:            0.0.3.0
 
 -- A short (one-line) description of the package.
 synopsis:           pms-domain-model
@@ -55,7 +55,7 @@
 -- extra-source-files:
 
 library
-    ghc-options: -Wall -Wno-orphans -Wno-x-partial
+    ghc-options: -Wall -threaded -Wno-orphans -Wno-x-partial
 
     -- Modules exported by the library.
     exposed-modules:  PMS.Domain.Model.DM.TH,
@@ -91,7 +91,7 @@
     default-language: GHC2021
 
 test-suite pms-domain-model-test
-    ghc-options: -Wno-incomplete-uni-patterns
+    ghc-options: -threaded -Wno-incomplete-uni-patterns
     -- Import common warning flags.
     -- import:           warnings
 
diff --git a/src/PMS/Domain/Model/DM/Constant.hs b/src/PMS/Domain/Model/DM/Constant.hs
--- a/src/PMS/Domain/Model/DM/Constant.hs
+++ b/src/PMS/Domain/Model/DM/Constant.hs
@@ -15,3 +15,8 @@
 _TIME_FORMAT :: B.ByteString
 _TIME_FORMAT = T.encodeUtf8 $ T.pack "%Y/%m/%d %T %z"
 
+-- |
+--
+_TOOLS_LIST_FILE :: String
+_TOOLS_LIST_FILE = "tools-list.json"
+
diff --git a/src/PMS/Domain/Model/DM/Type.hs b/src/PMS/Domain/Model/DM/Type.hs
--- a/src/PMS/Domain/Model/DM/Type.hs
+++ b/src/PMS/Domain/Model/DM/Type.hs
@@ -117,6 +117,25 @@
   , _resultJsonRpcResponse = def
   }
 
+-- |
+--
+data JsonRpcNotification =
+  JsonRpcNotification {
+    _jsonrpcJsonRpcNotification :: String
+  , _methodJsonRpcNotification  :: String
+  , _paramsJsonRpcNotification  :: Maybe RawJsonByteString
+  } deriving (Show, Read, Eq)
+
+$(deriveJSON defaultOptions {fieldLabelModifier = dropDataName "JsonRpcNotification", omitNothingFields = True} ''JsonRpcNotification)
+makeLenses ''JsonRpcNotification
+
+instance Default JsonRpcNotification where
+  def = JsonRpcNotification {
+        _jsonrpcJsonRpcNotification = "2.0"
+      , _methodJsonRpcNotification  = def
+      , _paramsJsonRpcNotification  = def
+      }
+
 --------------------------------------------------------------------------------
 
 -- |
@@ -232,7 +251,35 @@
   deriving (Show, Read, Eq)
 
 --------------------------------------------------------------------------------
+-- |
+--
+data McpInitializeResponseResultCapabilitiesResources =
+  McpInitializeResponseResultCapabilitiesResources {
+    _subscribedMcpInitializeResponseResultCapabilitiesResources :: Bool
+  , _listChangedMcpInitializeResponseResultCapabilitiesResources :: Bool
+  } deriving (Show, Read, Eq)
+$(deriveJSON defaultOptions {fieldLabelModifier = dropDataName "McpInitializeResponseResultCapabilitiesResources", omitNothingFields = True} ''McpInitializeResponseResultCapabilitiesResources)
+makeLenses ''McpInitializeResponseResultCapabilitiesResources
 
+instance Default McpInitializeResponseResultCapabilitiesResources where
+  def = McpInitializeResponseResultCapabilitiesResources {
+        _subscribedMcpInitializeResponseResultCapabilitiesResources = def
+      , _listChangedMcpInitializeResponseResultCapabilitiesResources = def
+      }
+
+
+data McpInitializeResponseResultCapabilitiesPrompts =
+  McpInitializeResponseResultCapabilitiesPrompts {
+    _listChangedMcpInitializeResponseResultCapabilitiesPrompts :: Bool
+  } deriving (Show, Read, Eq)
+$(deriveJSON defaultOptions {fieldLabelModifier = dropDataName "McpInitializeResponseResultCapabilitiesPrompts", omitNothingFields = True} ''McpInitializeResponseResultCapabilitiesPrompts)
+makeLenses ''McpInitializeResponseResultCapabilitiesPrompts
+
+instance Default McpInitializeResponseResultCapabilitiesPrompts where
+  def = McpInitializeResponseResultCapabilitiesPrompts {
+        _listChangedMcpInitializeResponseResultCapabilitiesPrompts = True
+      }
+
 -- |
 --
 data McpInitializeResponseResultCapabilitiesTools =
@@ -252,6 +299,8 @@
 data McpInitializeResponseResultCapabilities =
   McpInitializeResponseResultCapabilities {
     _toolsMcpInitializeResponseResultCapabilities :: McpInitializeResponseResultCapabilitiesTools
+  -- , _promptsMcpInitializeResponseResultCapabilities :: McpInitializeResponseResultCapabilitiesPrompts
+  -- , _resourcesMcpInitializeResponseResultCapabilities :: McpInitializeResponseResultCapabilitiesResources
   } deriving (Show, Read, Eq)
 $(deriveJSON defaultOptions {fieldLabelModifier = dropDataName "McpInitializeResponseResultCapabilities", omitNothingFields = True} ''McpInitializeResponseResultCapabilities)
 makeLenses ''McpInitializeResponseResultCapabilities
@@ -259,6 +308,8 @@
 instance Default McpInitializeResponseResultCapabilities where
   def = McpInitializeResponseResultCapabilities {
         _toolsMcpInitializeResponseResultCapabilities = def
+  --     , _promptsMcpInitializeResponseResultCapabilities = def
+  --     , _resourcesMcpInitializeResponseResultCapabilities = def
       }
 
 -- |
@@ -414,6 +465,45 @@
 --------------------------------------------------------------------------------
 -- |
 --
+data McpToolListChangedNotificationDataParams =
+  McpToolListChangedNotificationDataParams {
+    _toolsMcpToolListChangedNotificationDataParams :: RawJsonByteString
+  } deriving (Show, Read, Eq)
+
+$(deriveJSON defaultOptions {fieldLabelModifier = dropDataName "McpToolListChangedNotificationDataParams", omitNothingFields = True} ''McpToolListChangedNotificationDataParams)
+makeLenses ''McpToolListChangedNotificationDataParams
+
+instance Default McpToolListChangedNotificationDataParams where
+  def = McpToolListChangedNotificationDataParams {
+        _toolsMcpToolListChangedNotificationDataParams = RawJsonByteString "[]"
+      }
+
+-- |
+--
+data McpToolListChangedNotificationData =
+  McpToolListChangedNotificationData {
+    _methodMcpToolListChangedNotificationData  :: String
+  , _paramsMcpToolListChangedNotificationData  :: McpToolListChangedNotificationDataParams
+  } deriving (Show, Read, Eq)
+
+$(deriveJSON defaultOptions {fieldLabelModifier = dropDataName "McpToolListChangedNotificationData", omitNothingFields = True} ''McpToolListChangedNotificationData)
+makeLenses ''McpToolListChangedNotificationData
+
+instance Default McpToolListChangedNotificationData where
+  def = McpToolListChangedNotificationData {
+        _methodMcpToolListChangedNotificationData = "notifications/tools/list_changed"
+      , _paramsMcpToolListChangedNotificationData = def
+      }
+
+-- |
+--
+data McpNotification =
+  McpToolListChangedNotification McpToolListChangedNotificationData
+  deriving (Show, Read, Eq)
+
+--------------------------------------------------------------------------------
+-- |
+--
 type PtyConnectCommandCallback a = ExitCode
                                 -> String  -- ^ stdout
                                 -> String  -- ^ stderr
@@ -432,6 +522,25 @@
 
 -- |
 --
+type PtyTerminateCommandCallback a = ExitCode
+                                -> String  -- ^ stdout
+                                -> String  -- ^ stderr
+                                -> IO a
+
+-- |
+--
+data PtyTerminateCommandData =
+  PtyTerminateCommandData {
+    _namePtyTerminateCommandData :: String
+  , _argumentsPtyTerminateCommandData :: RawJsonByteString
+  , _callbackPtyTerminateCommandData  :: PtyTerminateCommandCallback ()
+  }
+
+makeLenses ''PtyTerminateCommandData
+
+
+-- |
+--
 type PtyMessageCommandCallback a = ExitCode
                                 -> String -- ^ stdout
                                 -> String -- ^ stderr
@@ -467,7 +576,18 @@
 
 makeLenses ''SystemCommandData
 
+{-
+-- |
+--
+data CmdRunCommandData =
+  CmdRunCommandData {
+    _jsonrpcCmdRunCommandData   :: JsonRpcRequest
+  , _nameCmdRunCommandData      :: String
+  , _argumentsCmdRunCommandData :: RawJsonByteString
+  }
 
+makeLenses ''CmdRunCommandData
+-}
 -- |
 --
 type EchoCommandCallback a = String -> IO a
@@ -487,20 +607,81 @@
 data Command =
     EchoCommand       EchoCommandData
   | PtyConnectCommand PtyConnectCommandData
+  | PtyTerminateCommand PtyTerminateCommandData
   | PtyMessageCommand PtyMessageCommandData
   | SystemCommand     SystemCommandData
+--  | CmdRunCommand     CmdRunCommandData
 
 
 --------------------------------------------------------------------------------
 -- |
 --
+data DefaultCmdRunCommandData =
+  DefaultCmdRunCommandData {
+    _jsonrpcDefaultCmdRunCommandData   :: JsonRpcRequest
+  , _nameDefaultCmdRunCommandData      :: String
+  , _argumentsDefaultCmdRunCommandData :: RawJsonByteString
+  } deriving (Show, Read, Eq)
+
+makeLenses ''DefaultCmdRunCommandData
+
+-- |
+--
+data EchoCmdRunCommandData =
+  EchoCmdRunCommandData {
+    _jsonrpcEchoCmdRunCommandData :: JsonRpcRequest
+  , _valueEchoCmdRunCommandData   :: String
+  } deriving (Show, Read, Eq)
+
+makeLenses ''EchoCmdRunCommandData
+
+-- |
+--
+data CmdRunCommand =
+    EchoCmdRunCommand EchoCmdRunCommandData
+  | DefaultCmdRunCommand DefaultCmdRunCommandData
+  deriving (Show, Read, Eq)
+
+--------------------------------------------------------------------------------
+-- |
+--
+data ToolsListWatchCommandData =
+  ToolsListWatchCommandData {
+  --  _jsonrpcToolsListWatchCommandData   :: JsonRpcRequest
+  } deriving (Show, Read, Eq)
+
+makeLenses ''ToolsListWatchCommandData
+
+-- |
+--
+data EchoWatchCommandData =
+  EchoWatchCommandData {
+    _jsonrpcEchoWatchCommandData :: JsonRpcRequest
+  , _valueEchoWatchCommandData   :: String
+  } deriving (Show, Read, Eq)
+
+makeLenses ''EchoWatchCommandData
+
+-- |
+--
+data WatchCommand =
+    EchoWatchCommand EchoWatchCommandData
+  | ToolsListWatchCommand ToolsListWatchCommandData
+  deriving (Show, Read, Eq)
+
+--------------------------------------------------------------------------------
+-- |
+--
 data DomainData = DomainData {
     _logDirDomainData        :: Maybe String
   , _logLevelDomainData      :: LogLevel
-  , _scriptsDirDomainData    :: String
+  , _toolsDirDomainData    :: String
   , _requestQueueDomainData  :: TQueue McpRequest
   , _responseQueueDomainData :: TQueue McpResponse
+  , _notificationQueueDomainData :: TQueue McpNotification
   , _commandQueueDomainData  :: TQueue Command
+  , _cmdRunQueueDomainData   :: TQueue CmdRunCommand
+  , _watchQueueDomainData    :: TQueue WatchCommand
   , _promptsDomainData       :: [String]
   }
 
@@ -509,19 +690,30 @@
 defaultDomainData :: IO DomainData
 defaultDomainData = do
   hSetEncoding stdin  utf8
+  hSetBuffering stdin LineBuffering
+
   hSetEncoding stdout utf8
+  hSetBuffering stdout LineBuffering
+
   hSetEncoding stderr utf8
+  hSetBuffering stderr LineBuffering
 
   reqQ <- newTQueueIO
   resQ <- newTQueueIO
+  notQ <- newTQueueIO
   cmdQ <- newTQueueIO
+  cmdRunQ <- newTQueueIO
+  watchQ  <- newTQueueIO
   return DomainData {
            _logDirDomainData        = Nothing
          , _logLevelDomainData      = LevelDebug
-         , _scriptsDirDomainData    = "./scripts"
+         , _toolsDirDomainData    = "./tools"
          , _requestQueueDomainData  = reqQ
          , _responseQueueDomainData = resQ
+         , _notificationQueueDomainData = notQ
          , _commandQueueDomainData  = cmdQ
+         , _cmdRunQueueDomainData   = cmdRunQ
+         , _watchQueueDomainData    = watchQ
          , _promptsDomainData       = def
          }
 
