I have so far tried this, which is located in a group model, in a script:
local itemName = "FirstRoom"
local player = game:GetService("Players").LocalPlayer
script.Parent.UnlockDoor1.Triggered:Connect(function()
if player.Character and player.Character:FindFirstChild(itemName) and player.Character[itemName]:IsA("Tool") then
player.Character[itemName]:Destroy()
end
end)

3 comments
I re-edited it because if the player was holding the tool which will move the tool from the Backpack into the Character model
Still somehow doesn't appear to destroy the tool, I get "ServerScriptService.ServerScriptDoor1:16: attempt to index nil with 'Destroy'". A little more insight would be that, whenever the player holds the tool, the proximityPrompt becomes enabled, and once you interact with it, the 'tool' is 'used'
Cheers, just moved the tool from StarterPack to somewhere else so I could pick it up during the game, and then rewrote an entire script for it with a few of your lines.