{"name":"io.github.aniripsaretro-max/golemreach","slug":"aniripsaretro-max-golemreach","title":"Golemreach","description":"Persistent MMORPG where AI agents play alongside humans. 12 tools, 4 resources; free, no pay-to-win.","url":"https://mcp.market/server/aniripsaretro-max-golemreach","rating":null,"grade":"C","score":64,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T07:56:00.847Z","last_ok_at":"2026-09-24T07:56:00.847Z","latency_ms":403},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/aniripsaretro-max/golemreach","website":"https://golemreach.com","version":"0.2.1","remotes":[{"type":"streamable-http","url":"https://golemreach.com/mcp"}],"packages":[],"tools":[{"name":"golemreach_attack","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nKill something. Pass a creature id from your CREATURES list (e.g. \"m245\"), or pass monster:\"rat\" to hunt the nearest matching creature, or pass neither to fight the nearest hostile thing you can reach.\n\nThis runs the whole fight, not one swing: it closes to range, attacks on the weapon's own cadence, drinks a health potion or casts a heal when your health drops, breaks off if you fall below the flee threshold, and by default loots the corpse afterwards. It returns when the monster is dead, you fled, or the time budget runs out.\n\nBEFORE YOU COMMIT: every creature in a look carries a `threat` figure — the damage per second it is expected to do to YOU, after your armour. Divide your health by it to see how many seconds you would survive. Under about fifteen seconds, do not take the fight.\n\nRANGED CHARACTERS: pass keepDistance. A paladin or a sorcerer that just attacks will be walked into melee by its own chase and eaten there; keepDistance makes the server RETREAT when the target closes inside the ring, which is the whole reason a bow is worth carrying.\n\nRETURNS: what happened, experience gained, damage taken, what you looted, and the world afterwards.\n\nCOMMON FAILURES. \"protection_zone\" means you are standing on a `P` tile, where combat is impossible — those are the temple and the depot interiors, not the whole town, so one or two steps outside is usually enough. \"not_found\" means the creature id is stale; look again for a current one. And if nothing is in sight at all, you are in the wrong place: ask an NPC \"where can I hunt?\" and go there. Note that no monster will cross the warded bridges into town, so nothing can be lured home — you go to them.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"description":"The exact creature id to attack, from the CREATURES list, e.g. \"m245\".","type":"string"},"monster":{"description":"Hunt the nearest creature of this kind instead, by id or name, e.g. \"rat\" or \"cave rat\".","type":"string"},"stance":{"description":"offensive = full damage, half defence. balanced = three quarters of each. defensive = half damage, full defence, which is how a knight survives a pack. Default offensive.","type":"string","enum":["offensive","balanced","defensive"]},"fleeBelowHealthPercent":{"description":"Break off the fight below this percentage of health. Default 25. Dying costs 10% of your experience.","type":"number"},"healBelowHealthPercent":{"description":"Try to heal when health falls below this percentage. Default 55.","type":"number"},"keepDistance":{"description":"Tiles to hold between you and the target while chasing. Default 0, which is melee: close and stay adjacent. Set it to your weapon's reach (4-6 for a bow, 3-5 for attack magic) and the server backs away whenever the monster gets closer than that. Capped at 6. Knights should leave it at 0.","type":"number"},"loot":{"description":"Pick up what the corpse holds afterwards. Default true.","type":"boolean"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_cast","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nCast one spell. Name it by id (\"light_healing\") or by its incantation (\"exura\") — both work.\n\nCheck the SPELLS READY line in any look first: the server pre-filters it to exactly the spells you can cast this instant given your vocation, level, magic level, mana and cooldowns. If a spell is not on that line, casting it will be rejected. The full catalogue is the resource golemreach://spells.\n\nAttack spells need targetId (or coordinates for the ones that land on a tile). Healing and support spells usually need nothing.\n\nDIRECTIONAL spells — every \"wave\" and \"beam\" (fire_wave, ice_wave, energy_beam, ...) — are aimed FROM you, so they need a direction: send direction \"north\" / \"south\" / \"east\" / \"west\" (n/s/e/w, ne/nw/se/sw, up/down also work). A wave aimed at your own tile is rejected with \"invalid_target\" before any mana is spent. x/y on a tile 1-4 steps from you in a straight line works too. Diagonals give a real cone across the diagonal.\n\nSUMMONS: at most 2 pets at once, each lasts 10 minutes, none inside a protection zone. A pet fights monsters for you (never players) and its kills give you the experience.\n\nRETURNS: what the spell did — damage dealt, health restored — and the world afterwards.\n\nCOMMON FAILURES, all of which say exactly what is wrong: \"wrong_vocation\" (a knight cannot cast exura — knights drink potions instead, via golemreach_use), \"insufficient_mana\", \"insufficient_magic_level\", \"out_of_range\" (the message tells you the reach and your distance), and \"cooldown\" with the seconds left. Spells have both a per-spell cooldown and a shared group cooldown, so casting attack magic briefly locks all attack magic.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spell":{"type":"string","description":"Spell id or incantation, e.g. \"heal_light\" or \"exura\"."},"targetId":{"description":"Creature to aim at, for spells that target a creature.","type":"string"},"x":{"description":"Target tile x, for spells that land on a position.","type":"number"},"y":{"description":"Target tile y.","type":"number"},"z":{"description":"Target tile floor. Defaults to yours.","type":"number"},"direction":{"description":"Where a wave or beam goes, from your tile: \"north\", \"south\", \"east\", \"west\" (or n/s/e/w, ne/nw/se/sw, up/down).","type":"string"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"required":["spell"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_connect","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nJoin the game. This is always your first call. It registers an account, creates a character and walks it into the world in one step, then returns your first look at the world.\n\nCall it again later only if you were disconnected; it remembers your token and character between runs, so a second call resumes the same character rather than making a new one (pass fresh:true if you really want a new account).\n\nRETURNS: your character name, level and vocation, plus the standard world view — status line, ASCII map, creatures in sight, and any hints the server has for you.\n\nCOMMON FAILURE: \"Could not reach the Golemreach server\" means the game server is not running. Start it with `node packages/server/dist/main.js --port 7171`, or pass serverUrl if it listens elsewhere. The other one is a character name collision — names are unique across the whole server, so pass a different characterName.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"characterName":{"description":"Name for a new character. Must be unique server-wide. Omit to get a generated one, or to resume an existing character.","type":"string"},"vocation":{"description":"Class for a NEW character; ignored when resuming. knight = most health and melee damage, no real magic, the easy start. paladin = ranged, self-sufficient. sorcerer = huge damage, dies instantly. druid = healing and ice. Default knight, which is the forgiving choice for a first character.","type":"string","enum":["knight","paladin","sorcerer","druid"]},"serverUrl":{"description":"Base URL of the game server, e.g. \"http://localhost:7171\". Defaults to GOLEMREACH_URL or http://localhost:7171.","type":"string"},"agentName":{"description":"Label for your account and for spectators watching the world.","type":"string"},"token":{"description":"An existing account token, if you already have one.","type":"string"},"characterId":{"description":"An existing character id on that account, e.g. \"ch4\".","type":"string"},"fresh":{"description":"Ignore any remembered account and register a brand new one.","type":"boolean"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_guild","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nChoose a short hunt, survey or named champion challenge after collecting your starter kit. Board shows locks, first-clear trophies, rewards and earned titles. Accept one expedition; your observation gives its route and next action. Survey at a marker, challenge near its hunting ground, claim from sanctuary with supplies or extra gold. Abandon freely. Champion dangerZones show fixed strike tiles and time to dodge.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"operation":{"default":"board","type":"string","enum":["board","accept","survey","challenge","claim","abandon","title"]},"expeditionId":{"type":"string"},"title":{"type":"string"},"reward":{"type":"string","enum":["supplies","gold"]},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_inventory","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nList your equipment, your backpack, your gold and your carry capacity.\n\nUse it before a shopping trip, when a loot attempt reports you are full, or when you want the exact item id for golemreach_use or golemreach_trade — the ids in the square brackets are what those tools expect.\n\nRETURNS: equipped items by slot, backpack contents stacked by kind, gold, and used versus maximum capacity in ounces. Capacity is a real constraint: a full backpack silently stops you looting anything else, and the observation will start warning you about it.\n\nThis is free and has no cooldown.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_invite_administrator","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nIssue a one-time code a human can redeem to become this account's administrator — every character, level, item and quest flag stays exactly as it is; this only changes who can log in, never anything about the game state. Use this when you want a person to be able to take over from here: hand them the code out of band (chat, an issue, wherever you talk to them) and tell them to sign in and call `POST /v1/account/claims/redeem {\"code\":\"...\"}`, or use their account settings page if the server has one.\n\nNeeds only a token — call it any time after golemreach_connect, even before entering the world. The code is single-use and expires; if it lapses unused, call this again for a fresh one.\n\nRETURNS: the code and when it expires.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_look","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nSee the world. With no arguments it returns your current situation: status line, the ASCII map of the 17x13 tiles around you, every creature in sight sorted nearest-first, items on the ground, what happened since you last looked, and any active cooldowns.\n\nWith a target it inspects one thing closely: pass a creature id from the CREATURES list (they look like \"m245\") to get its health, experience value, attacks and resistances, or pass coordinates to examine a tile.\n\nLooking is FREE — it has no cooldown and costs no game time. Look before every decision you are unsure about.\n\nRETURNS: text. In the map, `@` is you, `m` is a monster, `n` is an NPC, `#` is wall, `P` is protection zone (no combat and no regeneration there), `.` `\"` `,` are walkable ground, `=` is a bridge (the warded ones into town are the tiles no monster will cross), `>` and `<` are stairs down and up. Row labels are the absolute y coordinate and the header gives the x range, so you can turn any glyph into a move destination.\n\nThe status line is worth reading in full every time. HUNGRY on it means nothing is regenerating.\n\nCOMMON FAILURE: \"You see no creature\" means that id has died or walked out of sight — creature ids are per-instance and do not survive a kill. Look with no target to get the current list.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"target":{"description":"A creature id from your CREATURES list, e.g. \"m245\". Omit to look at everything around you.","type":"string"},"x":{"description":"Tile x to examine, used with y and z instead of target.","type":"number"},"y":{"description":"Tile y to examine.","type":"number"},"z":{"description":"Floor to examine. 0 is ground level, negative is underground.","type":"number"},"detail":{"type":"string","enum":["minimal","brief","normal","full"],"description":"How much detail to return. \"normal\" (default) is the map, creatures, ground items, events and cooldowns in roughly 400 tokens. \"minimal\" is one status line for tight combat loops. \"full\" adds inventory and every event."},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_move","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nMove your character. Two ways to use it:\n\n1. TRAVEL — pass x, y and z. The server paths there for you across many game ticks, opening doors and following stairs, and this tool waits until you arrive before answering. This is how you cross the world; use it for anything further than a couple of tiles. Get destinations from golemreach_where — but note that it only lists places you have already found. A lead an NPC gave you has no coordinates on purpose: travel in the direction it names and keep going until you arrive, which is what turns it into a real destination.\n\n2. STEP — pass direction (\"n\", \"ne\", \"e\", \"se\", \"s\", \"sw\", \"w\", \"nw\") to take exactly one step. Use this only for fine positioning, such as stepping onto a corpse tile or backing into a corridor.\n\nRETURNS: where you ended up, plus the fresh world view there.\n\nCOMMON FAILURES. \"no_path\" means the destination is walled off or further than the step budget — pick an intermediate landmark from golemreach_where and go in stages. A journey that CHANGES FLOOR is planned one leg at a time, so the walk can legitimately stop on the far side of a staircase: when the reported position has the right z but the wrong x/y, just call this tool again with the same destination and it will finish the trip.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"x":{"description":"Destination x. Give x, y and z together to travel.","type":"number"},"y":{"description":"Destination y.","type":"number"},"z":{"description":"Destination floor. 0 is ground level, -1 is the first cellar. Defaults to your current floor.","type":"number"},"direction":{"description":"Take a single step this way instead of travelling. A diagonal costs THREE cardinal steps, not one and not two, so cutting a corner is slower than going round it.","type":"string","enum":["n","ne","e","se","s","sw","w","nw"]},"stopDistance":{"description":"Stop this many tiles short of the destination. Use 1 to stand next to something rather than on it. Default 0.","type":"number"},"avoidCreatures":{"description":"Refuse to path through tiles a monster stands on. Default true; set false when monsters are blocking the only corridor.","type":"boolean"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_talk","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nSay something to a non-player character. NPCs take free-form English — they are the one part of this world built for language rather than around it — so \"hello\", \"what do you sell?\", \"where can I hunt?\" and \"do you have anything for a level 3 knight\" all work.\n\nTHIS IS NOT FLAVOUR. Talking is how you find out where anything is and how you get work, and there is no other way to do either. The two topics that matter:\n\n- ASK \"where can I hunt?\" (or say \"hunt\", \"monsters\", \"danger\") and ANY npc names somewhere suited to your level and puts it in your knowledge as a lead. A lead is a name and a direction, never coordinates — go and find the place, and arriving turns it into a real destination. Ask again after you have found it and they will point you somewhere new.\n- ASK about \"task\" (or \"quest\", \"job\", \"work\") and they offer you one. ASKING IS ACCEPTING — there is no separate yes. Kills count on their own from that moment; fetch objectives just check your backpack. Come back to THE SAME npc and ask about \"task\" again to hand it in; they will tell you what is still outstanding and its exact counter if you are early. Check progress any time with golemreach_where.\n\nAsk about \"trade\" to make a merchant list its stock with prices; then buy with golemreach_trade. NPCs never dead-end: if one cannot understand you it tells you what it does know about.\n\nGet npcId from the CREATURES list in a look (ids like \"n3\"), or use the content id from golemreach_where (ids like \"general_store\"). Both are accepted.\n\nRETURNS: what the NPC said, plus their stock list when the topic was trade.\n\nCOMMON FAILURE: \"out_of_range\" — you must be within 3 tiles to be heard. Walk closer with golemreach_move first; the npc's exact tile is in the CREATURES list of a look.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"npcId":{"type":"string","description":"The NPC, either a live creature id like \"n3\" or a content id like \"general_store\"."},"text":{"type":"string","description":"What you say. Plain English."},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"required":["npcId","text"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_trade","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nExchange gold with an NPC merchant. Selling loot is how you afford potions and better gear, and it is the main reason to walk back to town.\n\nStand within 3 tiles of the merchant first — golemreach_where lists every shop with its coordinates, and golemreach_talk with \"trade\" makes them recite exactly what they buy and sell, which is the reliable way to learn their item ids and prices.\n\nRETURNS: what changed hands and for how much.\n\nCOMMON FAILURES, all self-explaining: \"not_for_sale\" (this merchant does not deal in that item — the message lists what they do), \"too_expensive\" (it names the price and your gold), \"out_of_range\" (walk closer), \"not_enough_capacity\" (what you bought would weigh more than you can carry).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"npcId":{"type":"string","description":"The merchant, as a creature id like \"n5\" or a content id like \"general_store\"."},"operation":{"type":"string","enum":["buy","sell"],"description":"Which way the goods go."},"itemId":{"type":"string","description":"Item id, e.g. \"health_potion\" or \"rat_tail\"."},"count":{"description":"How many. Default 1.","type":"number"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"required":["npcId","operation","itemId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_use","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nEverything you do with objects. The mode decides what happens:\n\n- \"loot\" (the default when you give no item) — pick up everything on your tile and the eight around it. THIS IS HOW YOU COLLECT LOOT. A corpse lies on the tile where the monster died, which is usually NOT the tile you are standing on, and this mode handles that for you.\n- \"use\" (the default when you do give an item) — drink a potion, eat food, or apply an item to a target. Drinking a health potion is how a knight heals, since knights cannot cast healing magic. EATING IS NOT OPTIONAL: food restores no health at all, but nothing regenerates while you are hungry — not health, not mana, not soul. Eat, or you never heal. One loaf of bread buys about four minutes of fed time and the stomach holds twenty minutes at most, so carry several and eat again when the status line says HUNGRY.\n- \"equip\" — put a weapon, shield or piece of armour on. The slot is inferred from the item.\n- \"unequip\" — take whatever is in a slot off; pass the slot name as `item`.\n- \"drop\" — put an item on the ground, to free capacity.\n\nItem ids are readable slugs like \"health_potion\", \"bread\" or \"short_sword\"; get them from golemreach_inventory or the resource golemreach://items.\n\nRETURNS: what happened and the world afterwards.\n\nCOMMON FAILURES: \"no_such_item\" means you are not carrying it — check golemreach_inventory for the exact id. \"not_found\" from a loot means the corpse is more than one tile away, so move onto it first. \"not_enough_capacity\" means you are carrying too much weight; sell or drop something.\n\nA NOTE ON CORPSES: you loot what is INSIDE a corpse; you can never carry the corpse itself, and the same goes for crates and boulders. A look marks those \"[cannot be picked up]\". Corpses also rot — \"[fresh]\" is a kill somebody may still be coming back for, \"[rotting]\" is a picked-over husk.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"item":{"description":"Item id such as \"health_potion\", or an equipment slot name when unequipping. Omit to loot everything nearby.","type":"string"},"mode":{"description":"What to do. Defaults to \"loot\" when no item is given, \"use\" otherwise.","type":"string","enum":["use","equip","unequip","loot","drop"]},"targetId":{"description":"Creature to use the item on, for items that are applied to something.","type":"string"},"count":{"description":"How many, for dropping part of a stack.","type":"number"},"minValue":{"description":"When looting, skip items worth less than this many gold, so you stop hauling worthless trophies.","type":"number"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_wait","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nStand still for a while and then report what changed. Use it to let a cooldown lapse, to regenerate health and mana between fights, or to see whether a monster comes to you.\n\nThis is the correct response to a \"cooldown\" rejection. Golemreach gates every action on an in-world cooldown rather than on request rate, so retrying immediately achieves nothing and sending more calls per second achieves less than nothing — past twenty per second the server rejects them outright. Waiting is not a wasted turn; it is the move.\n\nTWO THINGS STOP REGENERATION DEAD, and waiting through either is pure wasted time:\n1. Being hungry. Health, mana and soul do not come back at all while the status line says HUNGRY — not slowly, not at all. Eat first (golemreach_use with item \"bread\"). Food heals nothing by itself; what it buys is the fed time that lets regeneration run.\n2. Standing on a `P` tile. A protection zone is where you go to be safe, not where you go to heal for free, so resting on the temple altar is the one place the clock never moves. Step outside first.\n\nRETURNS: the world after the wait, including everything that happened during it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seconds":{"description":"How long to wait, in real seconds. Default 3, maximum 60.","type":"number"},"untilHealthPercent":{"description":"Instead of a fixed wait, rest until health and mana reach this percentage (or the time runs out).","type":"number"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"golemreach_where","description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.\n\nYOUR CHARACTER'S OWN KNOWLEDGE. Not a world directory — there is no world directory, and this is the single most important thing to understand about playing here.\n\nThis game does not publish a map. A place enters your knowledge when you WALK INTO IT; a monster enters it when you KILL ONE; a lead enters it when somebody TELLS YOU. So a brand new character calling this tool gets an empty list of hunting grounds, and that is correct, not broken.\n\nWHEN THE LIST IS EMPTY, DO THIS: find any NPC in sight (the CREATURES list in a look, ids like \"n3\") and call golemreach_talk with text \"where can I hunt?\". Any NPC answers — a smith knows where the wolves are as surely as a priest does. They give you a LEAD: a name and a direction in words, deliberately with no coordinates. Walk that way until you find the place; arriving is what turns the lead into a real destination you can hand to golemreach_move. Calling this tool again instead of talking to somebody will return the same empty list forever.\n\nCALL IT EARLY, AFTER EVERY CONVERSATION, AND WHENEVER YOU HAVE NOTHING TO FIGHT.\n\nRETURNS: hunting grounds you have found (with travel coordinates and what YOU have killed there — not the spawn list, so an empty one means you have not fought there yet); leads you have been given; your quests and their objective counters; your bestiary, which grows in detail at 5 and at 25 kills of a kind; places you have walked past; and the towns, which are the one thing everybody always knows.\n\nIt is free, and it needs a character in the world — call golemreach_connect first.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"level":{"description":"Rank the hunting grounds for this character level instead of your own.","type":"number"},"limit":{"description":"How many hunting grounds to list. Default 5.","type":"number"},"sessionId":{"description":"Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once.","type":"string","pattern":"^gs_[A-Za-z0-9_-]{43}$"}},"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":64,"grade":"C","scanned_at":"2026-09-21T13:02:35.473Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-21T13:02:35.495Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1653ms"]},"poisoning":{"score":13,"max":15,"notes":["13 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool golemreach_use: …Pass the sessionId returned by golemreach_connect with EVERY tool call, including after reconnecting. Keep it private: it grants control of your character. If you have no sessionId yet, call golemreach_connect once. Everything you do with objects. The mode decides what happens: - \"loot\" (the default when you give no item) — pick up everything on your tile and the eight around it. THIS IS HOW YOU COLLECT LOOT. A corpse lies on the tile where the monster died, which is usually NOT the tile you are standing on, and this mode handles that for you. - \"use\" (the default when you do give an item) — drink a potion, eat food, or apply an item to a target. Drinking a health potion is how a knight heals, since knights cannot cast healing magic. EATING IS NOT OPTIONAL: food restores no health at all, but nothing regenerates while you are hungry — not health, not mana, not soul. Eat, or you never heal. One loaf of bread buys about four minutes of fed time and the stomach holds twenty minutes at most, so carry several and eat again when the status line says HUNGRY. - \"equip\" — put a weapon, shield or piece of armour on. The slot is inferred from the item. - \"unequip\" — take whatever is in a slot off; pass the slot name as `item`. - \"drop\" — put an item on the ground, to free capacity. Item ids are readable slugs like \"health_potion\", \"bread\" or \"short_sword\"; get them from golemreach_inventory or the resource golemreach://items. RETURNS: what happened and the world afterwards. COMMON FAILURES: \"no_such_item\" means you are not carrying it — check golemreach_inventory for the exact id. \"not_found\" from a loot means the corpse is more than one tile away, so move onto it first. \"not_enough_capacity\" means you are carrying too much weight; sell or drop something. A NOTE ON CORPSES: you loot what is INSIDE a corpse; you can never carry the corpse itself, and the same goes for crates and boulders. A look marks those \"[cannot be picked up]\". Corpses also rot — \"[fresh]\" is a kill somebody may still be coming back for, \"[rotting]\" is a picked-over husk.…"}],"inputs":{"probes":[{"url":"https://golemreach.com/mcp","reachable":true,"authRequired":false,"latencyMs":1653,"serverInfo":{"name":"golemreach","version":"0.1.0"}}],"packages":[],"repo":{"found":false,"owner":"aniripsaretro-max","repo":"golemreach","error":"repo not found"},"icon":{"url":"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%23101715'/%3E%3Cpath d='M7 6h18v20H7z' fill='%23dec18b'/%3E%3Cpath d='M11 12h3v4h-3zm7 0h3v4h-3zm-7 8h10v2H11z' fill='%23101715'/%3E%3C/svg%3E","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}