{"name":"com.familiarvtt/familiar","slug":"familiarvtt-familiar","title":"Familiar","description":"AI co-pilot for Foundry VTT: runs combat, scenes, voices and audio. Requires the Familiar module.","url":"https://mcp.market/server/familiarvtt-familiar","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"media","tags":["media"],"presence":{"score":33,"stars":1,"forks":0,"downloads_week":325,"last_push_at":"2026-10-05T21:13:18.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Ryanjansen92/familiar-releases","website":"https://familiarvtt.com","version":"2.26.0","remotes":[],"packages":[{"registryType":"npm","identifier":"familiar-vtt","version":"2.26.0","transport":{"type":"stdio"}}],"tools":[{"name":"add-combatant","description":"Add tokens to an active combat encounter as new combatants. Use for mid-combat reinforcements. Requires an active combat. A token already in the encounter is always rejected; during enforced dnd5e combat a dead or 0-HP token is rejected too \\u2014 at 0 HP heal it first (heal-party); dead needs revival magic (a Revivify-class spell through resolve-spell, combat-ai bundle \\u2014 healing cannot reviv","write_action":false,"price_micros":0,"input_schema":null},{"name":"advance-time","description":"Advance the in-game clock by a specified duration. Returns the new in-game time. Use for long rests (8 hours), short rests (1 hour), travel montages, narrative time skips, and, outside combat (rounds keep time there), once per turn for an action that took in-world time (a conversation, a walk, a search) with a plausible duration. Specify at least one time unit. On a D&D 5e world with the system ca","write_action":false,"price_micros":0,"input_schema":null},{"name":"apply-condition-to-group","description":"Apply a status condition to multiple tokens at once. Tokens that already have the condition, or are immune to it, are skipped (echoed alreadyHad / immune: true) and still count toward `applied` \\u2014 this tool never removes; remove per token with toggle-condition. Use get-available-conditions first to see valid condition names and which carry ruleBasis (the engine-gated set). Returns per-token re","write_action":false,"price_micros":0,"input_schema":null},{"name":"apply-damage","description":"Apply damage to one or more targets in a single batch (temp HP absorption handled automatically). Returns per-target results with HP before/after. Use for AoE effects, lair actions, or environmental/trap damage that hits creatures directly. A creature ATTACKING another creature must NOT use this \\u2014 use resolve-attack / resolve-spell (combat-ai bundle) instead, which enforce range, to-hit, and ","write_action":false,"price_micros":0,"input_schema":null},{"name":"assign-character-ownership","description":"Give a player ownership or limited access to a character. Permission levels: 0=NONE, 1=LIMITED (basic info), 2=OBSERVER (full view), 3=OWNER (full control). Use OWNER (3) to assign a character to a player. Use list-users to find valid user names/IDs. Returns the character name, user name, and applied permission level.","write_action":false,"price_micros":0,"input_schema":null},{"name":"award-xp","description":"Award experience points to party members … or to the named recipients (dnd5e worlds only). Divides the total XP evenly among recipients. Use after combat or for milestone rewards.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create-character","description":"Create a new character (NPC or PC) from scratch, optionally with everything on it: system (any sheet data \\u2014 identity, abilities, traits, skills, currency, HP; its param names the D&D 5e NPC paths, update-character the rest), items (embedded item records: features, weapons, spells, class/species/background \\u2014 each {name, type, system, img}; on D&D 5e 5.x an item's actions live in system.ac","write_action":true,"price_micros":0,"input_schema":null},{"name":"create-character-from-compendium","description":"Import a creature or NPC from a compendium pack into the world as a new actor with its full stat block, items, spells, and features. Returns the new actor ID. Use search-compendium first to find the pack key and entry ID. For creating a blank character from scratch, use create-character (character-edit bundle) instead.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create-compendium-pack","description":"Create a new empty world compendium pack holding exactly one document type. The pack starts unlocked and appears under the Compendiums tab; fill it with export-to-compendium and edit entries with update-compendium-entry. Note: a world pack belongs to this world only \\u2014 for content reused across worlds, export into an unlocked pack of a shared compendium module instead (created once via Foundry","write_action":true,"price_micros":0,"input_schema":null},{"name":"create-journal","description":"Create a new journal entry, optionally with initial pages of content. Returns the new journal ID and page IDs. Pages support HTML formatting. Use for session notes, lore, NPC details, handouts, or quest tracking.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create-journal-page","description":"Add a new page to an existing journal entry. Returns the new page ID. Text pages (the default) take HTML or plain text content. Image pages accept src \\u2014 a Foundry-relative path (e.g. the familiar/generated/\\u2026 path returned by generate-image), an https URL, or a raster data: URI \\u2014 turning generated art into a persistent handout. …)} Showing the page to players stays a separate manual ","write_action":true,"price_micros":0,"input_schema":null},{"name":"create-scene","description":"Create a scene, optionally with an EXISTING image as its background (the background param \\u2014 a Foundry-relative path such as a familiar/generated/\\u2026 result). For an AI-GENERATED battle map, dungeon, tavern, or any scene whose image does not exist yet, prefer generate-scene (enable the scene-generator bundle) \\u2014 it creates the scene AND generates + applies the background in one step. Re","write_action":true,"price_micros":0,"input_schema":null},{"name":"create-tokens","description":"Place one or more tokens on the active scene from world actors. Each entry's actorId accepts a world actor ID or its exact name. Supports batch placement for encounter setup. Returns the created token IDs. Use start-combat afterward to begin a combat encounter with the placed tokens.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete-character","description":"Delete a character from the world permanently. Removes the actor and all its owned items, spells, and features. This is irreversible. Tokens on scenes will become unlinked. Returns the deleted character name and ID. During enforced dnd5e combat, deleting an actor that still has a live combatant in any started encounter is rejected: defeat it through resolve-attack / resolve-spell, or use remove-co","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete-character-items","description":"Remove items, spells, or features from a character permanently. Accepts item names or Foundry document IDs. This is destructive and irreversible. Returns the actor name and the deleted item IDs (names are resolved to IDs).","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete-journal","description":"Delete a journal entry and all its pages permanently. This is irreversible. Map pins linked to this journal will lose their link. Returns the deleted journal name and ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete-journal-page","description":"Delete a single page from a journal entry. The journal entry itself and other pages are preserved. This is irreversible. Returns the journal name and deleted page ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete-scene","description":"Delete a scene from the world permanently. Removes all tokens, walls, lights, and sounds on the scene. This is irreversible. Returns the deleted scene name and ID. During enforced dnd5e combat, deleting the scene the active combat is fought on is rejected while creatures are still in the fight \\u2014 end the combat first (end-combat), or clear the encounter through resolve-attack / resolve-spell /","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete-tokens","description":"Remove tokens from the active scene permanently. Accepts token names or IDs. This does not delete the underlying actor \\u2014 only the token placement on this scene. Returns the count of deleted tokens, their IDs, and any errors for tokens not found. During enforced dnd5e combat, deleting a token that is still a live combatant is rejected (it would take the creature off the battlefield mid-fight):","write_action":true,"price_micros":0,"input_schema":null},{"name":"disable-tool-bundle","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"duplicate-character","description":"Clone an existing character to create a copy with all items, spells, and features. Returns the new actor's ID and resolved name. Use for creating NPC variants (e.g., 'Goblin Archer' from 'Goblin'). For creating characters from scratch, use create-character instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"enable-tool-bundle","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"end-combat","description":"End the current combat encounter. Removes all combatants from the tracker and resets initiative order. Use when a fight ends or to clean up before starting a new encounter. Combat data (rounds, turns) is lost \\u2014 check get-combat first if you need to record results. Ending combat also sweeps combat-scoped automation \\u2014 active spell zones, summons, transforms, and feature effects (e.g. Rage)","write_action":false,"price_micros":0,"input_schema":null},{"name":"export-to-compendium","description":"Copy an existing world document (actor, item, journal, rollable table, macro, playlist, scene, or card stack) into a compendium pack. The document is looked up by name or ID in the world collection matching the pack's document type; the original stays in the world and the pack receives a copy. Re-exporting the same document OVERWRITES its earlier copy in the pack with the current world version (th","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-available-conditions","description":"List all status conditions available in the game system (e.g., prone, poisoned, blinded, stunned). Returns every condition (no pagination) with ID, name, icon, and ruleBasis \\u2014 ruleBasis:true means the condition requires a D&D 5e rule basis, so ADDing it by manual toggle is rejected during enforced dnd5e combat (route it through the resolvers; \"dead\" additionally rejects manual REMOVE). ruleBa","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-character","description":"Get a character's sheet: a neutral core (name, type, HP where the sheet has a recognizable pool) plus the native stat block in the system's own vocabulary (on D&D 5e: an identity block \\u2014 the sheet's gender/pronouns text, alignment, size, age, class levels; NPCs also CR + creature type \\u2014 then ability scores with saves, AC, movement, spells with slots, features, condition immunities, activ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-character-item","description":"Get full details of a specific item, spell, or feature on a character. On D&D 5e returns description plus the common mechanics fields (properties, damage, range, uses, save, activities, \\u2026) \\u2014 a curated set; …. Use the item ID from search-character-items results.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-combat","description":"Get the current combat tracker state. Returns round number, active turn, and all combatants with initiative order, HP, and hidden/defeated state. For AC, conditions, positions, and abilities for AI decision-making, use get-combat-snapshot (combat-ai bundle) instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-combat-snapshot","description":"Read the current combat state to decide a creature's turn \\u2014 call once at the start of every turn. The view is filtered per role: enemies show HP percentage only (never exact HP); the CURRENT combatant carries the full stat block (usable weapons/spells/features \\u2014 features[] is SHEET metadata, not a resolve-feature contract: resolve-feature's error listing is the authoritative activatable ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-compendium-entry","description":"Get full details of a compendium entry. Returns complete stat blocks for creatures, spell descriptions with mechanics, or item properties (HTML stripped to plain text). For JournalEntry packs, returns the entry's pages as plain text: ONE page by pageId (the matchedPage.id from a search-compendium row \\u2014 the way to read a rule or a glossary entry without paging), or a window via pageOffset/page","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-current-scene","description":"Get the active scene with paginated token data. Returns scene name, dimensions (width/height in pixels), grid settings (size, distance), darkness level (plus darknessLock: true while Darkness Lock is on \\u2014 set-darkness then needs overrideLock), a vision block (tokenVision; globalLight only when switched on: true = lighting everything in line of sight now, \"outside-darkness-range\" = on but idle","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-familiar-settings","description":"Read Familiar's own settings (the switches and selects of its settings window) with their current value, default, allowed values and who may change them. Pass area for one tab, or key for one setting with its full option list; omit both for every readable setting. Each entry carries label, kind, scope (world = stored in this Foundry world for every client; client = stored in the GM browser that ru","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-journal","description":"Get a full journal entry with all page content rendered as plain text (HTML stripped). Returns the entry name and all pages with their names, IDs, types, and full content; media pages (image/video/pdf) also carry their src path when set \\u2014 reusable in create-journal-page or send-chat-message. A big entry can outgrow the caller's result budget: pass limit (and offset) to read it in page windows","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-journal-page","description":"Get a single page from a journal entry with full content (media pages also carry their src path when set). Use the page ID from list-journals or get-journal results. For reading all pages at once, use get-journal instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-movement-options","description":"Get pre-scored tactical movement options for the current combatant. Returns up to 5 positions within the movement REMAINING this turn (condition-aware speed minus distance already moved \\u2014 speedFt echoes that remainder, not the statblock walk), each scored and categorized (advance, retreat, flank, hold, approach-ally). Includes opportunity attack risk warnings and cover analysis. Scores factor","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-scene","description":"Get full details of any scene by name or ID, including dimensions, grid settings, darkness level (plus darknessLock: true while locked), weather, background image, folder, the vision block (tokenVision, globalLight, lights, fog \\u2014 same shape and absence rules as get-current-scene), and paginated token list (rows share get-current-scene\\u2019s shape \\u2014 default hidden/elevation and a matchin","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-screenshot","description":"Capture an annotated JPEG screenshot of the GM's current Foundry VTT canvas view. Tokens are overlaid with numbered colored badges (green=friendly, red=hostile, yellow=neutral). Returns the image and a text legend mapping badge numbers to token name, disposition, HP, and AC. Use to verify token positions, inspect the battlefield, or reference tokens by number in conversation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-server-diagnostics","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-time","description":"Get the current in-game time as elapsed world time: total seconds plus a formatted \"Day N, HH:MM:SS\" string (elapsed time, not a calendar date \\u2014 days count from world start; the dnd5e 6+ system calendar, where enabled, is separate). Use before advance-time to check the current time and plan time skips.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-user","description":"Get detailed information about a specific user. Returns name, ID, role, online status, assigned character (omitted when none), color, and a list of the actors they explicitly own (per-user OWNER permission \\u2014 default-ownership grants and implicit GM access are not enumerated). Accepts user name (exact match) or Foundry user ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-weather-effects","description":"List all available weather effect IDs that can be applied with set-weather. Returns effect names and IDs. Use to discover valid weather options before applying one.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get-world-info","description":"Foundry VTT world metadata: game system, world name, Foundry version, and all connected players with a GM flag (role names live in list-users). When the GM has saved table rules for this world, the result carries them as tableInstructions (standing setting, tone, and house rules) \\u2014 follow them in everything you narrate. When the campaign has stored memories, it carries campaignMemory (the top","write_action":false,"price_micros":0,"input_schema":null},{"name":"heal-party","description":"Heal all party members … or a specific character or token. Healing is capped at max HP. Omit identifier to heal the entire party. Use after combat, during a rest, or when applying healing spells/potions to multiple characters. Healing a creature at 0 HP revives it automatically (death saves reset, unconscious/prone removed, defeat cleared); creatures marked dead cannot be healed \\u2014 their per-t","write_action":false,"price_micros":0,"input_schema":null},{"name":"import-compendium-to-character","description":"Import an item or spell from a compendium pack onto a character's sheet. Copies the compendium entry as a new owned item. Use search-compendium (compendium bundle) first to find the pack key and entry ID. For a D&D 5e class, subclass, species, or background pass applyAdvancement:true (or choices / build, which imply it) \\u2014 the system's own advancement engine then runs: level-1 features, fixed ","write_action":false,"price_micros":0,"input_schema":null},{"name":"level-up-class","description":"Level up a class on a character (dnd5e worlds only \\u2014 on other systems this tool refuses; level up through the game system instead). Pass applyAdvancement:true (or choices / build, which imply it) to let the system's own advancement engine do the level: class features, scale values, proficiency and HP-after-an-average-level apply by themselves; every genuine choice (HP roll-or-average, ASI vs ","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-characters","description":"List actors in the world with summary info (name, type). Returns a paginated list without stats or portraits \\u2014 HP/AC/level live in get-character and list-party-members, image paths in get-character. Every row also carries hasPortrait and hasToken: false means that slot still holds the placeholder art Foundry or the game system assigned (a wildcard prototype token counts as art the GM chose). ","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-compendium-packs","description":"List all available compendium packs. Returns each pack's ID (collection key, e.g., 'dnd5e.spells'), document type (Actor, Item, JournalEntry, Scene, etc.), human-readable label, source system, and locked (a locked pack takes no writes \\u2014 system and module packs ship locked). Use the returned pack IDs with search-compendium and get-compendium-entry to find and retrieve specific entries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-journals","description":"List journal entries in the world with pagination. Returns each entry's name, ID, page count with page names/IDs (page types live in get-journal), and folder name. Response includes total count and hasMore flag. Filter by folder name for organized worlds. For searching journal content, use search-journals instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-party-members","description":"Get the adventuring party: on D&D 5e the members of the world's primary party group (the Party sheet \\u2014 they count before any player owns them; those rows carry `partyGroup` = the group's name, in both shapes) merged with every actor a player owns (owner permission, a world-default owner grant included); on other systems the player-owned actors. Returns a lightweight summary \\u2014 name plus, ","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-scenes","description":"List scenes in the world with pagination. Returns each scene's name, ID, active status, and navigation visibility. Response includes total count and hasMore flag. Use to find a scene before switching to it with switch-scene.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-tool-bundles","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list-users","description":"List all users in the game world. Returns each user's name, ID, role (Gamemaster/Player/Trusted/Assistant/None), and online status; character is omitted when none is assigned, and Assistant and Gamemaster roles both count as GM. Color and the owned-actor list live in get-user. Use to find valid user names before assign-character-ownership / revoke-character-ownership (character-edit bundle) or sen","write_action":false,"price_micros":0,"input_schema":null},{"name":"move-token","description":"Move a token to x,y pixel coordinates on the current scene \\u2014 the GM repositioning tool for outside combat: it ignores walls and closed doors (like the GM\\u2019s Unconstrained Movement toggle) and does not check movement speed. On gridded scenes the target snaps to the top-left origin of its grid cell; the returned x,y is the committed position and `snappedFrom` echoes your raw input when the ","write_action":false,"price_micros":0,"input_schema":null},{"name":"next-round","description":"Advance combat to the next round, resetting to the top of initiative order. Returns the new round number and active combatant. If combat hasn't started yet, this begins the first round instead. Use to skip remaining turns in the current round. Turn-boundary automation (recurring saves, zone damage, effect expiry) is engine-resolved for every crossed turn \\u2014 the skipped turns' start/end events ","write_action":false,"price_micros":0,"input_schema":null},{"name":"pan-canvas","description":"Pan and zoom the GM canvas camera to a position. Animates smoothly over the specified duration. Use after switch-scene to focus on a specific area, or to draw attention to a location during gameplay.","write_action":false,"price_micros":0,"input_schema":null},{"name":"previous-turn","description":"Go back one combatant's turn within the current round \\u2014 the GM correction for an accidental next-turn. Returns the new active combatant. The step back fires no turn automation and rewinds nothing already resolved (to restore state a resolver mutated, use undo-last-workflow, combat-ai bundle); it also lands on combatants Skip Defeated would skip. Refuses to cross a round boundary \\u2014 from t","write_action":false,"price_micros":0,"input_schema":null},{"name":"pull-players-to-scene","description":"Pull specific players to a scene WITHOUT activating it: each named player's view switches to that scene while the active scene \\u2014 and everyone not named \\u2014 stays where they are. Use for split-party play (one group in the tavern, another in the dungeon) or to bring one player to a side scene; use switch-scene instead when the whole table should move. A player without a token on the target s","write_action":false,"price_micros":0,"input_schema":null},{"name":"query-aoe-targets","description":"Find tokens within an area of effect \\u2014 use it to plan AoE spell targeting before casting. Returns tokens sorted by distance from origin. Six shapes: 'circle' (default \\u2014 a 3D sphere), 'cone' (PHB 1:1 triangular), 'line', 'cube' (square rotated to direction), 'ray' (line geometry; supports the firstHitOnly planning filter), 'cylinder' (circle footprint + vertical band); each shape's requir","write_action":false,"price_micros":0,"input_schema":null},{"name":"quick-start-combat","description":"Create a combat encounter, add combatants, roll initiative and begin round 1 in one step (dnd5e worlds only \\u2014 on other systems use start-combat). The result's `current` is the first combatant: read get-combat-snapshot next, and call next-turn only once that turn is resolved. Omit identifiers to add all visible scene tokens (hidden tokens are skipped \\u2014 pass includeHidden:true to include t","write_action":true,"price_micros":0,"input_schema":null},{"name":"remove-combatant","description":"Remove combatants from the active combat encounter \\u2014 ONLY for creatures that genuinely left the fight (fled, banished, surrendered and out of the scene). Use combatant IDs from get-combat. During enforced dnd5e combat, removing a creature that is still in the fight \\u2014 live hit points, or a player character that is not dead \\u2014 is rejected unless `reason` records why it left: defeat cre","write_action":true,"price_micros":0,"input_schema":null},{"name":"rename-character","description":"Rename an actor and update its prototype token name to match. Returns the previous name and the actor ID. Accepts character name (exact match) or Foundry actor ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reset-fog","description":"Reset fog of war exploration for the active scene, hiding all previously revealed areas. This is irreversible \\u2014 players will need to re-explore. Rejected when the GM is viewing a different scene than the active one (switch scenes first). Use when resetting a dungeon or starting a new exploration phase. Returns the scene name. This never fixes a player who cannot see the map: that is token vis","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-ability-check","description":"Roll a creature's ability check or skill check against a DC, in or out of combat (the creature needs a token on the active scene). No DC named: pick the one you judge fair and say which. The check is rolled from the creature's sheet \\u2014 the game system's own roll (proficiency, bonuses, magic items; no dialog) \\u2014 so a creature's check goes here, never to roll-dice. … Use for skill checks (Pe","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-action","description":"Use the Dash, Dodge, or Disengage action. Dash doubles movement speed for the turn. Dodge: until its next turn starts, attacks against it by attackers it can see have disadvantage and its DEX saves advantage \\u2014 not while it is Incapacitated or at Speed 0. Disengage prevents the opportunity attacks your movement would provoke (a Sentinel holder's Guardian attack still lands \\u2014 see reactions","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-attack","description":"Resolve a creature's attack (NPC or PC) \\u2014 a weapon OR statblock feature attack (2024 natural attacks like Rend; spells: resolve-spell). Rolls to hit (condition advantage/disadvantage and auto-crits fold in) vs target AC, rolls damage on hit (a PC crit doubles dice), applies it, posts to chat. Sneak Attack and weapon-mastery riders (Topple, Push, Sap, Slow) auto-apply on eligible hits \\u2014 n","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-death-save","description":"Resolve a death saving throw for a target at 0 HP. Rolls 1d20 plus saving-throw bonuses (Bless/Bane, Aura of Protection \\u2014 2024: death saves ARE saving throws): natural 20 revives with 1 HP, natural 1 counts as two failures, total >= 10 is a success, below 10 is a failure. 3 successes stabilize, 3 failures kill.","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-feature","description":"Activate a class feature or feat by name for the acting creature \\u2014 Rage, Action Surge, Wild Shape, Lay on Hands, Bardic Inspiration, Channel Divinity, Fiendish Vigor, Second Wind, Wholeness of Body (more as their rules land). Validates the feature exists on the actor and is activation-supported, enforces its action-economy cost (Rage/Wild Shape/Lay on Hands/Bardic Inspiration/Second Wind/Whol","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-grapple-shove","description":"Resolve a 2024 grapple or shove (a special melee attack). The target makes a Strength OR Dexterity saving throw (its best) against DC 8 + the attacker's Strength modifier + proficiency bonus; on a failure the grapple applies the Grappled condition, and a shove knocks the target Prone or pushes it 5 ft (pick with mode). On a success nothing happens. Shoving an AIRBORNE target Prone makes it fall (2","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-legendary-action","description":"Use a legendary action between other creatures' turns. Validates charges, deducts the cost, and posts the use to chat \\u2014 it does NOT roll the action's mechanics: after this call, resolve the actual attack/spell via resolve-attack / resolve-spell with force:true and reason 'legendary action' (it is not the creature's turn). Cannot be used on the creature's own turn. Legendary actions recharge a","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-movement","description":"Move a token to a new position on the battlefield during combat. Calculates distance moved in game units (feet), compares against the actor's condition-aware speed (grappled/prone reduce it), requires a wall-respecting path on walled scenes, updates the token position, and reports movement remaining. Use this during combat turns instead of move-token \\u2014 it enforces movement rules. Outside comb","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-multiattack","description":"Resolve a Multiattack action for an NPC. Parses the Multiattack feature description, identifies component attacks, and resolves each. Returns all attack results plus a damage summary. Each attacks[] row carries 'weapon' \\u2014 the name of the attack it rolled with; ABSENT = an older module or server. A component result carrying 'hewGranted: true' means …; ABSENT = no grant or an older server. 'rea","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-saving-throw","description":"Force a saving throw on a target, in or out of combat (the creature needs a token on the active scene), against a DC and report success or failure. No DC named: pick the one you judge fair and say which. The save is rolled from the creature's sheet \\u2014 the game system's own roll (proficiency, save bonuses, magic items; no dialog) \\u2014 so a creature's save goes here, never to roll-dice. … Not ","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve-spell","description":"Cast a spell from a creature. Spends a slot (cantrips free; slotless spells: see upcastLevel), resolves spell attacks or saves per target, rolls and applies damage, handles concentration, posts to chat. Reactions and aftermath are engine-resolved \\u2014 never re-roll or re-apply them; per-target aftermath fields are explained on targets. reactionsSkipped = reactions left to a person, decidedBy pla","write_action":false,"price_micros":0,"input_schema":null},{"name":"rest-party","description":"Apply short or long rest to all party members …. Long rest: restores full HP, resets all resources, and restores spell slots. Short rest: allows hit dice recovery and resets short-rest resources. Posts rest results to chat. Returns per-character results with success/failure and post-rest HP. dnd5e worlds only. With the dnd5e 6+ calendar enabled, daily (day / dawn / dusk) item uses recover on the c","write_action":false,"price_micros":0,"input_schema":null},{"name":"revoke-character-ownership","description":"Remove a player's access to a character by setting their permission to NONE (an explicit per-user level \\u2014 it overrides the world's default permission for that player). Use list-users to find valid user names/IDs. Returns the character and user names.","write_action":true,"price_micros":0,"input_schema":null},{"name":"roll-dice","description":"Roll a dice formula and return the numeric result. Supports standard notation (1d20+5, 2d6+3) and advanced syntax (4d6kh3 keep highest, 2d20kl1 keep lowest). The result's dice array …. Result is posted to Foundry chat by default. … … For attack rolls or spell damage during combat, prefer resolve-attack or resolve-spell (combat-ai bundle) instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roll-initiative","description":"Roll initiative for combatants in the active encounter (dnd5e worlds only). Returns rolled values and updated turn order. … rolled: 0 means nothing needed rolling, or (with explicit IDs) that none of the supplied IDs matched a rollable combatant; use combatant IDs from get-combat. Omit combatantIds to roll for every combatant that hasn't rolled yet. For rolling only NPCs (letting players roll thei","write_action":false,"price_micros":0,"input_schema":null},{"name":"search-character-items","description":"Search a character's inventory, spells, and features. Returns a compact list of matching items with IDs, names, and types, …. Rows also carry equipped, quantity, price {value, denomination}, container {id, name}, spell level, prepared where applicable, and hasArt: false when the item still wears a default icon; item images live in get-character-item. Use to find an item before calling get-characte","write_action":false,"price_micros":0,"input_schema":null},{"name":"search-compendium","description":"Search compendium packs for items, creatures, spells, or journal entries by name. Returns matching entries with names, pack keys, and IDs, …. Narrow with type (a document type or an entry subtype) or pack (one collection key); an unknown type is an error that lists the valid ones. JournalEntry packs also match on page titles and content \\u2014 those rows carry a matchedPage (page id, name, and a s","write_action":false,"price_micros":0,"input_schema":null},{"name":"search-journals","description":"Search journal entries by title and page content text. Returns matching entries with names, IDs, and text snippets showing where the search term appears, …. A page row carries a snippet only when the match was in its content \\u2014 no snippet means the page title matched, and an entry with an empty matchingPages array matched on its own title. Page types live in get-journal; folder names in list-j","write_action":false,"price_micros":0,"input_schema":null},{"name":"search-scenes","description":"Search scenes by name. Returns matching scenes with names, IDs, and active status, …. Use to find a scene when you only know part of the name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set-combatant-defeated","description":"Set or clear the defeated marker on combatants \\u2014 tracker bookkeeping only (strike-through in the tracker; turn advancement skips marked combatants when the tracker\\u2019s \"Skip Defeated\" setting is on). Changes no HP and applies no conditions; NPCs reduced to 0 HP by resolver damage are marked automatically, and player characters are never marked while death saves are pending. Use to correct ","write_action":false,"price_micros":0,"input_schema":null},{"name":"set-darkness","description":"Set the scene darkness level (0=bright daylight, 0.5=twilight, 1=pitch black). Returns the new darkness value (plus darknessLock: true when the Darkness Lock stayed on). A scene whose darkness the GM locked (get-current-scene reports darknessLock: true) is refused until you pass overrideLock: true, which sets the level and keeps the lock; on Foundry builds before 14.368 only the GM can unlock it (","write_action":false,"price_micros":0,"input_schema":null},{"name":"set-table-npc","description":"Pin this NPC so Familiar answers AS it when a player writes \"@<name> \\u2026\" in the ordinary Foundry chat, or un-pin it (enabled:false). While the GM's world switch \"Familiar answers as any NPC\" is on (the default; the result echoes anyNpc:true \\u2014 absent = the switch is off, or the Foundry module predates it), every world actor a player does not own already answers to its name, so an un-pinned","write_action":false,"price_micros":0,"input_schema":null},{"name":"set-turn","description":"Jump the combat tracker to a specific combatant's turn within the current round \\u2014 a GM correction for turn-order mistakes (wrong active combatant, accidental skip). Returns the new active combatant. The jump is a pure pointer correction: no turn-boundary automation runs in either direction \\u2014 skipped combatants' turn effects do not fire and the landed combatant's turn-start automation is ","write_action":false,"price_micros":0,"input_schema":null},{"name":"set-weather","description":"Set a weather particle effect on the active scene (rain, fog, snow, etc.). Use get-weather-effects to see valid IDs. Pass an empty string to clear the current weather. Only one weather effect can be active at a time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"start-combat","description":"Create a new combat encounter and add combatants from the current scene. If no identifiers are provided, all visible tokens on the active scene are added automatically (hidden tokens are skipped to preserve ambush tension \\u2014 pass includeHidden:true to override, or use add-combatant mid-combat when hidden creatures reveal). Returns the combat tracker with all added combatants. After starting, u","write_action":true,"price_micros":0,"input_schema":null},{"name":"switch-scene","description":"Switch the active scene by name or ID. All players are pulled to the new scene. Returns the activated scene name and ID (use get-current-scene for full data). Use pan-canvas afterward to focus on a specific area. To move only specific players without activating the scene for everyone, use pull-players-to-scene instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"toggle-condition","description":"Toggle a status condition on a token (e.g., prone, poisoned, blinded). Adds the condition if absent, removes it if present. Use get-available-conditions first to see valid condition names and which carry ruleBasis (the engine-gated set). Returns the token name and toggled condition. During enforced dnd5e combat, conditions with a rule basis (prone, grappled, frightened, \\u2026) are engine-managed ","write_action":false,"price_micros":0,"input_schema":null},{"name":"toggle-pause","description":"Pause or unpause the game. Returns the new pause state. Players cannot take actions while the game is paused. Omit the paused parameter to toggle.","write_action":false,"price_micros":0,"input_schema":null},{"name":"undo-last-workflow","description":"Undo one change by workflowId (from list-undoable-workflows), or the newest undoable one when omitted. Two kinds. A DOCUMENT change (id chg_\\u2026): the fields the update wrote are restored to their previous values through the same handler that wrote them, so its guards apply \\u2014 during an enforced encounter a revert that would LOWER hit points is refused exactly like a fiat decrease, while one","write_action":false,"price_micros":0,"input_schema":null},{"name":"update-character","description":"Update character data using Foundry dot-notation paths, e.g. {\"system.attributes.hp.value\": 25}. Use get-character (with sections) first to see current values; the result keys are the paths. Identity and biography (D&D 5e): system.details.gender (the free-text gender/pronouns field), .age, .alignment, .appearance, .trait, .ideal, .bond, .flaw, .faith, .eyes/.hair/.skin/.height/.weight, .biography.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-character-item","description":"Update an item on a character using dot-notation paths (e.g., {\"system.levels\": 5, \"system.equipped\": true}). Use get-character-item first to see current values and valid paths. Accepts character name or actor ID. Returns the item's ID and post-update name. Change only the fields the GM named; on a failure make the smallest correction, never a broader one.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-compendium-entry","description":"Update fields on an entry inside an unlocked compendium pack using dot-notation paths (e.g. {\"name\": \"...\", \"system.details.cr\": 5}). System-provided packs are locked and cannot be edited \\u2014 this works on world packs and other packs the user unlocked. The folder of an entry inside the pack changes with move-compendium-entries (folders bundle), not here. Use search-compendium to find the pack k","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-familiar-setting","description":"Change one Familiar setting: the key exactly as get-familiar-settings lists it, and a value of the setting's kind (boolean, number or string; a select takes one of its choices or option ids; a host that sends every value as text may pass 'true', 'false' or '100' \\u2014 they are read as the setting's kind). The result echoes what happened: updated (false when that value was already stored), applied","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-journal","description":"Rename a journal entry. For updating page content, use update-journal-page instead. Moving a journal between folders and changing ownership are not supported through this tool. Change only the fields the GM named; on a failure make the smallest correction, never a broader one.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-journal-page","description":"Replace the content of an existing journal page. Accepts HTML or plain text. Use get-journal first to read the current content before overwriting. Change only the fields the GM named; on a failure make the smallest correction, never a broader one.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-scene","description":"Update scene properties using Foundry dot-notation paths. Supports name, grid, dimensions, background image, navigation visibility, tokenVision, environment.globalLight.enabled (true lights everything in line of sight for players \\u2014 the fix when a player with a sighted token sees a black map; when the vision block says globalLight is \"outside-darkness-range\", change environment.darknessLevel i","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-token","description":"Update token visual properties on the current scene. Supports hidden, lock, elevation, size, rotation, and disposition. Elevation changes are REJECTED during active D&D 5e combat while combat rule enforcement is on (the default) \\u2014 elevation is part of the 3D combat model (range, reach, opportunity attacks, auras, AoE), so setting it directly would be flying by fiat; the GM can adjust it on th","write_action":true,"price_micros":0,"input_schema":null},{"name":"update-tokens","description":"Batch update properties on multiple tokens at once. Supports hidden, lock, elevation, size, rotation, and disposition. Elevation changes are REJECTED during active combat while rule enforcement is on (see update-token). Returns per-token results, plus a `_hint` naming the tokens whose write the game system\\u2019s own token automation acts on (the size sync and falling cases described on update-tok","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-10-29T18:47:03.502Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-29T18:47:03.416Z","components":{"code":{"score":20,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 24 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/mcp-package/index.mjs: …&&(d=this.opts.code.process(d,e));let h=new Function(`${ti.default.self}`,`${ti.default.scope…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"familiar-vtt","version":"2.26.0","found":true,"license":"SEE LICENSE IN LICENSE","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-10-05T21:03:46.469Z","repositoryUrl":"git+https://github.com/Ryanjansen92/familiar-releases.git","weeklyDownloads":325}],"repo":{"found":true,"owner":"Ryanjansen92","repo":"familiar-releases","archived":false,"pushedAt":"2026-10-05T21:13:18Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/221149631?v=4","ownerCreatedAt":"2025-07-16T14:15:43Z","license":"NOASSERTION"},"icon":{"url":"https://familiarvtt.com/apple-touch-icon.png","source":"registry","width":180,"height":180},"presence":{"stars":1,"forks":0,"downloadsWeek":325,"license":"NOASSERTION","lastPushAt":"2026-10-05T21:13:18.000Z","score":33}}}},"grade_history":[],"reviews":[]}