I'd do this with some kind of behavior tree solution - you path to the goal, and take note of all the obstacles that has been blocking your A*. If you fail, you check if there are objects that can help overcome those obstacles, in that case, path to that object. Repeat. This means that the agent needs to try to path to the goal and fail before getting the idea of using tools though, which might take time, especially if there's a huge world of tiles that all need to be checked. Might not look too out of place that the agent takes some time to contemplate on how to solve the problem though.
I can imagine a real, hardcore solution however. Add another dimension to you path finding grid. So in the case of a 2D map, you make the pathfinding grid 3D. In this simple example this new dimension would only have a depth of two, but in a real game it would get large quickly.
At z=0 you map the terrain during normal circumstances, meaning that water tiles are considered impassable.
At z=1 you map the terrain as it is while having the rake, meaning that water tiles are considered walkable (but if you have for example wall tiles, those might remain solid).
The path finding is an ordinary A* in the x and y dimensions, meaning that every grid cell is considered to have access to its neighbors. In the z dimension however, the A* is NOT allowed to spread.
Except where the rake is. The rake object acts as an opening between z=0 and z=1 in the path finding grid.
This means that the A* will flood fill outward in z=0, hit the water, and run out of options - then it'll spread to z=1 through the rake tile, and at z=1 (where water is walkable) find its way to the goal. The effect is that the NPC whithout hesitation moves to the rake, and then moves the shortest path to the goal.