This test checks that the server obeys the rules for initialization lifecycle,
and rejects non-ping requests until 'initialized' is received.

See also modelcontextprotocol/go-sdk#225.

-- client --
{ "jsonrpc":"2.0", "method": "notifications/initialized" }
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": { "name": "ExampleClient", "version": "1.0.0" }
  }
}
{ "jsonrpc":"2.0", "id": 1, "method":"ping" }
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }
{ "jsonrpc":"2.0", "method": "notifications/initialized" }
{ "jsonrpc": "2.0", "id": 3, "method": "tools/list" }

-- server --
{
	"jsonrpc": "2.0",
	"id": 2,
	"error": {
		"code": 0,
		"message": "method \"tools/list\" is invalid during session initialization"
	}
}
{
	"jsonrpc": "2.0",
	"id": 1,
	"result": {
		"capabilities": {
			"logging": {}
		},
		"protocolVersion": "2024-11-05",
		"serverInfo": {
			"name": "testServer",
			"version": "v1.0.0"
		}
	}
}
{
	"jsonrpc": "2.0",
	"id": 1,
	"result": {}
}
{
	"jsonrpc": "2.0",
	"id": 2,
	"result": {
		"tools": []
	}
}
{
	"jsonrpc": "2.0",
	"id": 3,
	"result": {
		"tools": []
	}
}
