diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for pms-domain-service
 
+## 0.1.6.0 -- 2026-06-15
+
+* Added pms-infra-agent-server: TCP server listen/accept functionality for AI agents.
+
 ## 0.1.5.0 -- 2026-05-31
 
 * Added pms-infra-agent-socket, pms-infra-agent-serial.
diff --git a/pms-domain-service.cabal b/pms-domain-service.cabal
--- a/pms-domain-service.cabal
+++ b/pms-domain-service.cabal
@@ -20,7 +20,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            0.1.5.0
+version:            0.1.6.0
 
 -- A short (one-line) description of the package.
 synopsis:           pms-domain-service
diff --git a/src/PMS/Domain/Service/DS/State/Run/ToolsCall.hs b/src/PMS/Domain/Service/DS/State/Run/ToolsCall.hs
--- a/src/PMS/Domain/Service/DS/State/Run/ToolsCall.hs
+++ b/src/PMS/Domain/Service/DS/State/Run/ToolsCall.hs
@@ -70,6 +70,14 @@
       go dat "agent-serial-read-byte"  = agentSerialReadByteCommand dat
       go dat "agent-serial-write"      = agentSerialWriteCommand dat
       go dat "agent-serial-write-byte" = agentSerialWriteByteCommand dat
+      go dat "agent-server-listen"       = agentServerListenCommand dat
+      go dat "agent-server-close"        = agentServerCloseCommand dat
+      go dat "agent-server-status"       = agentServerStatusCommand dat
+      go dat "agent-server-events"       = agentServerEventsCommand dat
+      go dat "agent-server-read"         = agentServerReadCommand dat
+      go dat "agent-server-write"        = agentServerWriteCommand dat
+      go dat "agent-server-read-byte"    = agentServerReadByteCommand dat
+      go dat "agent-server-write-byte"   = agentServerWriteByteCommand dat
       go dat "socket-open"       = socketOpenCommand dat
       go dat "socket-close"      = socketCloseCommand dat
       go dat "socket-read"       = socketReadCommand dat
@@ -677,3 +685,97 @@
 
   cmdQ <- view DM.fileSystemQueueDomainData <$> lift ask
   liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.ReplaceFileFileSystemCommand cmdDat
+
+
+-- |
+--
+agentServerListenCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerListenCommand dat = do
+  let cmdDat = DM.AgentServerListenCommandData {
+                DM._jsonrpcAgentServerListenCommandData   = dat^.DM.jsonrpcMcpToolsCallRequestData
+              , DM._argumentsAgentServerListenCommandData = dat^.DM.paramsMcpToolsCallRequestData^.DM.argumentsMcpToolsCallRequestDataParams
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerListenCommand cmdDat
+
+
+-- |
+--
+agentServerCloseCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerCloseCommand dat = do
+  let cmdDat = DM.AgentServerCloseCommandData {
+                DM._jsonrpcAgentServerCloseCommandData = dat^.DM.jsonrpcMcpToolsCallRequestData
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerCloseCommand cmdDat
+
+
+-- |
+--
+agentServerStatusCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerStatusCommand dat = do
+  let cmdDat = DM.AgentServerStatusCommandData {
+                DM._jsonrpcAgentServerStatusCommandData = dat^.DM.jsonrpcMcpToolsCallRequestData
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerStatusCommand cmdDat
+
+
+-- |
+--
+agentServerEventsCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerEventsCommand dat = do
+  let cmdDat = DM.AgentServerEventsCommandData {
+                DM._jsonrpcAgentServerEventsCommandData   = dat^.DM.jsonrpcMcpToolsCallRequestData
+              , DM._argumentsAgentServerEventsCommandData = dat^.DM.paramsMcpToolsCallRequestData^.DM.argumentsMcpToolsCallRequestDataParams
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerEventsCommand cmdDat
+
+
+-- |
+--
+agentServerReadCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerReadCommand dat = do
+  let cmdDat = DM.AgentServerReadCommandData {
+                DM._jsonrpcAgentServerReadCommandData   = dat^.DM.jsonrpcMcpToolsCallRequestData
+              , DM._argumentsAgentServerReadCommandData = dat^.DM.paramsMcpToolsCallRequestData^.DM.argumentsMcpToolsCallRequestDataParams
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerReadCommand cmdDat
+
+
+-- |
+--
+agentServerWriteCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerWriteCommand dat = do
+  let cmdDat = DM.AgentServerWriteCommandData {
+                DM._jsonrpcAgentServerWriteCommandData   = dat^.DM.jsonrpcMcpToolsCallRequestData
+              , DM._argumentsAgentServerWriteCommandData = dat^.DM.paramsMcpToolsCallRequestData^.DM.argumentsMcpToolsCallRequestDataParams
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerWriteCommand cmdDat
+
+
+-- |
+--
+agentServerReadByteCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerReadByteCommand dat = do
+  let cmdDat = DM.AgentServerReadByteCommandData {
+                DM._jsonrpcAgentServerReadByteCommandData   = dat^.DM.jsonrpcMcpToolsCallRequestData
+              , DM._argumentsAgentServerReadByteCommandData = dat^.DM.paramsMcpToolsCallRequestData^.DM.argumentsMcpToolsCallRequestDataParams
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerReadByteCommand cmdDat
+
+
+-- |
+--
+agentServerWriteByteCommand :: DM.McpToolsCallRequestData -> AppContext ()
+agentServerWriteByteCommand dat = do
+  let cmdDat = DM.AgentServerWriteByteCommandData {
+                DM._jsonrpcAgentServerWriteByteCommandData   = dat^.DM.jsonrpcMcpToolsCallRequestData
+              , DM._argumentsAgentServerWriteByteCommandData = dat^.DM.paramsMcpToolsCallRequestData^.DM.argumentsMcpToolsCallRequestDataParams
+              }
+  cmdQ <- view DM.agentServerQueueDomainData <$> lift ask
+  liftIO $ STM.atomically $ STM.writeTQueue cmdQ $ DM.AgentServerWriteByteCommand cmdDat
