High-level tool availability in the Pokemon Red environment

Issue

We know from the starter kit that, in the Pokémon Red environment, we can use not only low-level actions but also high-level actions.
In the starter-kit environment, we verified that low-level actions (e.g., up, A) work correctly, as shown in Case 1.
However, high-level actions such as move_to did not execute as expected. This can be checked in Case 2.
Has anyone successfully executed high-level actions, or am I perhaps calling the command incorrectly?

🎮 Action Space
The fundamental action space consists of the Game Boy buttons: up, down, left, right, a, b, start, and select. Additionally, a set of higher-level tools is available:

move_to(x, y): Finds and executes a path to the specified map coordinates (x,y).
interact_with_object(name): Interacts with a specified object in the environment.
warp_with_warp_point(x, y): Uses a specified warp point to move to a different location.
overworld map transition(direction): Transitions to an adjacent map in the given direction.
continue_dialog(): Advances the current dialogue.
select_move_in_battle(move_name): Selects and uses a specific move in a Pokemon battle.
switch_pkmn_in_battle(pokemon_name): Switches to a different Pokemon in the player’s party during a battle.
run_away(): Attempts to flee from a wild Pokemon battle.
use_item_in_battle(item_name): Uses a specified item during a Pokemon battle.

Game log

Case 1: Low-level action (succeed)

Pressing A successfully advances to the next screen.

[16:07:24] - mcp.server.lowlevel.server - INFO - Processing request of type CallToolRequest
[16:07:24] - mcp_game_servers.base_server - INFO - Environment created successfully.
[16:07:24] - mcp_game_servers.base_server - INFO - executing actions: PokemonRedAction(action='A')
[16:07:28] - mcp_game_servers.base_server - INFO - score: 0, is_finished: False
[16:07:28] - mcp_game_servers.base_server - INFO - dispatch_final_action result: 0, False
[16:07:29] - mcp.server.lowlevel.server - INFO - Processing request of type CallToolRequest
[16:07:29] - mcp_game_servers.base_server - INFO - Request for loading observation
[16:07:29] - mcp_game_servers.base_server - INFO - Environment created successfully.
[16:07:29] - mcp_game_servers.base_server - INFO - Loading current observation
[16:07:29] - mcp_game_servers.base_server - INFO - load_obs result: State: Field

[Filtered Screen Text]
N/A

[Selection Box Text]
N/A


[Enemy Pokemon]
- Not in battle


[Current Party]
No more Pokemons


[Badge List]
N/A

[Bag]
N/A


[Current Money]: ¥3000

[Map Info]
Map Name: RedsHouse2f, (x_max , y_max): (7, 7)
Map type: reds_house
Expansion direction: $00
Your position (x, y): (3, 6)
Your facing direction: down
Action instruction
 - up: (x, y) -> (x, y-1)
 - down: (x, y) -> (x, y+1)
 - left: (x, y) -> (x-1, y)
 - right: (x, y) -> (x+1, y)

Map on Screen:
( 0,  2): O	( 1,  2): O	( 2,  2): O	( 3,  2): O	( 4,  2): O	( 5,  2): O	( 6,  2): O	( 7,  2): O
( 0,  3): O	( 1,  3): O	( 2,  3): O	( 3,  3): O	( 4,  3): O	( 5,  3): O	( 6,  3): O	( 7,  3): O
( 0,  4): O	( 1,  4): O	( 2,  4): O	( 3,  4): X	( 4,  4): O	( 5,  4): O	( 6,  4): O	( 7,  4): O
( 0,  5): O	( 1,  5): O	( 2,  5): O	( 3,  5): TalkToPrintRedSNESText	( 4,  5): O	( 5,  5): O	( 6,  5): O	( 7,  5): O
( 0,  6): X	( 1,  6): O	( 2,  6): O	( 3,  6): O	( 4,  6): O	( 5,  6): O	( 6,  6): X	( 7,  6): O
( 0,  7): X	( 1,  7): O	( 2,  7): O	( 3,  7): O	( 4,  7): O	( 5,  7): O	( 6,  7): X	( 7,  7): O
,
{}

Case 2: High-level action (failed)

On the first map, I executed the command use_tool(move_to, (x=6, y=3)), but the player remained at the same position (Your position (x, y): (3, 6)).
The command did not take effect.

[16:08:49] - mcp.server.lowlevel.server - INFO - Processing request of type CallToolRequest
[16:08:49] - mcp_game_servers.base_server - INFO - Environment created successfully.
[16:08:49] - mcp_game_servers.base_server - INFO - executing actions: PokemonRedAction(action='use_tool(move_to, (x=6, y=3))')
[16:08:53] - mcp_game_servers.base_server - INFO - score: 0, is_finished: False
[16:08:53] - mcp_game_servers.base_server - INFO - dispatch_final_action result: 0, False
[16:08:54] - mcp.server.lowlevel.server - INFO - Processing request of type CallToolRequest
[16:08:54] - mcp_game_servers.base_server - INFO - Request for loading observation
[16:08:54] - mcp_game_servers.base_server - INFO - Environment created successfully.
[16:08:54] - mcp_game_servers.base_server - INFO - Loading current observation
[16:08:54] - mcp_game_servers.base_server - INFO - load_obs result: State: Field

[Filtered Screen Text]
N/A

[Selection Box Text]
N/A


[Enemy Pokemon]
- Not in battle


[Current Party]
No more Pokemons


[Badge List]
N/A

[Bag]
N/A


[Current Money]: ¥3000

[Map Info]
Map Name: RedsHouse2f, (x_max , y_max): (7, 7)
Map type: reds_house
Expansion direction: $00
Your position (x, y): (3, 6)
Your facing direction: down
Action instruction
 - up: (x, y) -> (x, y-1)
 - down: (x, y) -> (x, y+1)
 - left: (x, y) -> (x-1, y)
 - right: (x, y) -> (x+1, y)

Map on Screen:
( 0,  2): O	( 1,  2): O	( 2,  2): O	( 3,  2): O	( 4,  2): O	( 5,  2): O	( 6,  2): O	( 7,  2): O
( 0,  3): O	( 1,  3): O	( 2,  3): O	( 3,  3): O	( 4,  3): O	( 5,  3): O	( 6,  3): O	( 7,  3): O
( 0,  4): O	( 1,  4): O	( 2,  4): O	( 3,  4): X	( 4,  4): O	( 5,  4): O	( 6,  4): O	( 7,  4): O
( 0,  5): O	( 1,  5): O	( 2,  5): O	( 3,  5): TalkToPrintRedSNESText	( 4,  5): O	( 5,  5): O	( 6,  5): O	( 7,  5): O
( 0,  6): X	( 1,  6): O	( 2,  6): O	( 3,  6): O	( 4,  6): O	( 5,  6): O	( 6,  6): X	( 7,  6): O
( 0,  7): X	( 1,  7): O	( 2,  7): O	( 3,  7): O	( 4,  7): O	( 5,  7): O	( 6,  7): X	( 7,  7): O
,
{}

Log file

evaluation.log.zip (1.8 KB)

I’m facing the same issue. While basic inputs like moving up/down and confirming work, the advanced functions are failing.

Additionally, for me, the coordinates appear as question marks.

It’s possible that the file isn’t loading correctly depending on where the Pokémon .gbc file was downloaded. @inchangbaek, would you mind telling me where you got your ROM?

Map on Screen:
( 0,  2): ?	( 1,  2): ?	( 2,  2): ?	( 3,  2): ?	( 4,  2): ?	( 5,  2): ?	( 6,  2): ?	( 7,  2): ?	
( 0,  3): ?	( 1,  3): ?	( 2,  3): ?	( 3,  3): ?	( 4,  3): ?	( 5,  3): ?	( 6,  3): ?	( 7,  3): ?	
( 0,  4): ?	( 1,  4): ?	( 2,  4): ?	( 3,  4): ?	( 4,  4): ?	( 5,  4): ?	( 6,  4): ?	( 7,  4): ?	
( 0,  5): ?	( 1,  5): ?	( 2,  5): ?	( 3,  5): ?	( 4,  5): ?	( 5,  5): ?	( 6,  5): ?	( 7,  5): ?	
( 0,  6): ?	( 1,  6): ?	( 2,  6): ?	( 3,  6): ?	( 4,  6): ?	( 5,  6): ?	( 6,  6): ?	( 7,  6): ?	
( 0,  7): ?	( 1,  7): ?	( 2,  7): ?	( 3,  7): ?	( 4,  7): ?	( 5,  7): ?	( 6,  7): ?	( 7,  7): ?

I generated the .gbc file by compiling the repository shown below.
In the official Orak documentation, this URL was referenced in the game-setup section.

1 Like