- Brand
- Unknown
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
Charat displays ChatGPT character conversations as a continuing visual novel using saved portraits, expressions, backgrounds, audio, maps and memories. Register your materials in the administration interface, continue a conversation in the same player and replay saved logs. Saved data is isolated by the connected account. Account identification is required to access private data. Charat does not generate images or music, send external messages, sell products or process payments.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- No account required
- First tracked
- 2026-10-22
- Tool count
- 43
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Charat
Get updates when Charat’s Discoverability Score or category rank changes.
Competitive lineup
43 tools agents can invoke
Player-only committed-render acknowledgement. It requires the exact card instance, opening response, manifest version, ownership epoch, receipt/application timestamps, and renderCommittedAt. The result reports that card's truthful current lifecycle status; a delayed older acknowledgement never hides a newer failed or interactive status.
ack_charat_render
Switch one registered person to a saved form while preserving its stable character id, memory, presence and historical log snapshots.
set_charat_character_form
Compatibility alias for an already-open player. Prefer append_charat_turns_v2. Use exactly once per user message. Pass the exact sessionId when accepted; otherwise use the exact legacyResponseIdPrefix. Never guess a session. Every character turn must set speakerType=character and the exact registered speakerId. Reuse the same stable responseId on retries, update only the existing player, and end with no ordinary assistant prose. CHARACTER RESOLUTION LOCK: character operations never route on a hard-coded character name. When the user supplies a registered characterId, use that exact id. When the user supplies a name or registered alias and the exact id is not already available in the latest Charat result, call resolve_charat_character_v2 once and use only its unique exact characterId/speakerId. Never choose among ambiguous matches or substitute a visually similar character. A normal registered character uses exact-id presence/form/move/turn operations. A saved true mob that is already present uses its returned speakerId for append; only an absent saved mob uses its existing mobInstanceId with reenter_charat_mob_v2. A generatorOnly record is a preset and may only be supplied as generatorCharacterId to spawn_charat_mob_v2; it can never speak or enter. CHARACTER IDENTITY LOCK: every character turn must include one exact registered speakerId. Resolve the registered name, allowed aliases, face, expression, mouth, emotion effects, first-person pronoun, address terms, and voice again from that same speakerId for every turn. Never inherit any persona or visual state from the preceding speaker. speakerTag/displayTag are validation-only aliases of that same character and may never name another character.
append_charat_turns
Preferred V3 delivery tool. DIALOGUE ROUTING: Charat session activity is independent of card heartbeat or rendering. For character conversation from the main ChatGPT input or the Player input, keep using append_charat_turns_v2 while sessionActive/active is true, even when connected=false or the card is hidden, stale, pending, or failed. Never replace or duplicate character dialogue with ordinary assistant prose. Only explicit disconnect ends this routing. Explicit requests to debug Charat, inspect code, or manage settings are maintenance, not character dialogue: answer those normally without inventing character lines or disconnecting the session. For character dialogue, use exactly once in the existing active Charat session. Copy speakerId and speakerTag from replyProtocol.sceneContext.speakerIdentities. For a direct named-character address, also pass addressedCharacterId for that same person. Do not call connect, disconnect, or resume tools for maintenance; explicit user-requested disconnect is handled separately. Copy the exact sessionId returned by open_charat_player and reuse one stable responseId on retries. Put visible dialogue and [ナレーター] narration in final order. Every character turn, including consecutive turns by the same character, must repeat its exact registered speakerId; never omit it and never use another character's nameplate or alias. Explicit name calls (including elongated vocatives such as ユウー!) first use resolve_charat_character_v2 with the registered name, then use that exact speakerId. An away/offstage call requires enterCharacterIds:[that exact id] on its first spoken turn; do not silently omit the reply. For ordinary unprompted speakers use replyProtocol.sceneContext.canonicalParticipantIds, not only the three projection slots; during an active event follow nextSpeakerId without repeats before the round completes. For a changing emotional line, add a sparse expressionTimeline at Unicode character offsets using only that speaker's participantExpressionCatalog. Decide cues from completed-text meaning and character voice, not keywords alone; special/extra tags are transient and conservative. Ordinary speech preserves scene.currentMapId: omit mapId/mapTag and autoWarpToSpeakerMap unless the current user explicitly requested movement. A departure is not prose-only: put the departing exact id in exitCharacterIds on the departure line. An explicitly offstage character stays absent until an explicit call; put its id in enterCharacterIds on the line that calls it back before it speaks. This data-only tool updates the log, scene, mob-ledger presence, and source-grounded mobMemoryUpdates atomically in the existing session and must not open a new card. Character-perspective narration must use the complete replyProtocol.charatNarrator.narratorCharacterProfile, including first-person and diction, while remaining speakerType=narrator with no portrait or mouth animation; neutral third-person fallback is forbidden. Audio priority is explicit turn/event, then memory/event, then map, generic tags, then silence or maintain. After it succeeds, end with no ordinary assistant prose. CHARACTER RESOLUTION LOCK: character operations never route on a hard-coded character name. When the user supplies a registered characterId, use that exact id. When the user supplies a name or registered alias and the exact id is not already available in the latest Charat result, call resolve_charat_character_v2 once and use only its unique exact characterId/speakerId. Never choose among ambiguous matches or substitute a visually similar character. A normal registered character uses exact-id presence/form/move/turn operations. A saved true mob that is already present uses its returned speakerId for append; only an absent saved mob uses its existing mobInstanceId with reenter_charat_mob_v2. A generatorOnly record is a preset and may only be supplied as generatorCharacterId to spawn_charat_mob_v2; it can never speak or enter. CHARACTER IDENTITY LOCK: every character turn must include one exact registered speakerId. Resolve the registered name, allowed aliases, face, expression, mouth, emotion effects, first-person pronoun, address terms, and voice again from that same speakerId for every turn. Never inherit any persona or visual state from the preceding speaker. speakerTag/displayTag are validation-only aliases of that same character and may never name another character. COMPACT OBSERVER VOICE LOCKS (no long personality field): カミル=一人称「私」、丁寧で祈りに近い語り、リコル/かみさま/貴女。スクーダ=一人称「僕」、冷静で皮肉を含む記録者口調、リコル。ユウ=一人称「おれ」、語尾「~ッス」、リコルは「姉さん」。リョウ=一人称「わたし」、毒を含む丁寧語、リコルは「姉さま」。レヴェル=一人称「俺」、乾いた静かな口調、リコル。各ターンでspeakerIdから一つだけ選び、前話者の規則を混ぜない。 TWIGA SPEECH LOCK: トゥイガ/Twigaは成人男性キャラクター。一人称は必ず「わー」。明るく可愛い琉球少年口調で「はいさーい」「~さぁ」「~ねぇ」を自然に使う。レヴェルは必ず「兄さん」と呼び、リコルは「リコル」「鍵持ちさん」「あんた」のいずれかで呼ぶ。「僕」「俺」「私」は一人称に使わず、低音の取り立て屋口調や一般的な男性口調へ寄せない。 MOB GENERATION LOCK: a character with mobGenerator enabled is a generator target only and must never speak, enter, or occupy a portrait slot itself. Without opening a form or asking for confirmation, treat natural appearance requests such as 「村人」「街の人」「あそこの人」「受付の人」「店員」「兵士」「スタッフ」「知らない端末」「知らないモブプリセット」「通りすがりの人」「知らないモンスター」「モンスターが出てきた」「村人ひとり来て」「会議室に端末ひとり」「そのへんの人に聞いてみる」「知らない人が入ってきた」「村人3人」 as new-NPC intent when no registered character or saved mob is identified. For an unnamed new, another, different, generic-role, or never-met person/creature, call spawn_charat_mob_v2 once with the exact sessionId, one stable responseId, and count when quantity is stated. Put an explicitly stated generic noun such as 受付担当, 兵士, 店員, or モンスター in role, not desiredName; desiredName is only an explicit unique proper name. Explicit role/origin always wins and place inference is only for omitted details. Set templateId=monster for an explicitly unknown monster or creature so it receives the non-human portrait preset. Omit mapId to use the current map. Unless the user explicitly requests a child or selects a child generator, choose an adult preset and never default to child; youth_male/youth_female are adults in their 20s. Infer contextual roles: village/city=villager/resident/traveler/merchant, meeting room=staff/soldier/terminal/aide, tavern=clerk/customer/regular, reception=receptionist/guide/visitor, military facility=soldier/operator/maintenance staff, dungeon/outdoors=monster/adventurer/traveler. Use only each returned speakerId for that generated individual. A saved mob name/mobInstanceId or contextual reference such as 「さっきのモブ」「さっきの受付の人」 uses find_charat_mobs only when needed, then uses its returned speakerId immediately if present or reenter_charat_mob_v2 if absent; never spawn a duplicate. A normal registered character name or alias is not a mob and follows CHARACTER RESOLUTION LOCK. With zero to two portraits visible, never request a replacement: fill an empty slot and preserve every existing participant. Only when all three slots are full and the user explicitly names a seat exchange may replaceCharacterId be passed; otherwise overflow NPCs remain same-map and conversationally available. True mobs never join an omitted map movement or auto-enter merely because a map changed or a slot is empty. After an explicit exit they remain absent until the user explicitly refers to that saved individual and reenter_charat_mob_v2 restores the same mobInstanceId. Each new true mob receives stable mobInstanceId, characterId, speakerId, seed, appearance, name and persona. When a generated mob gains a stable role, relationship, knowledge, preference, identity, or speech trait during the current reply, include one source-grounded mobMemoryUpdates entry in append_charat_turns_v2. Never store a momentary mood, clothing, injury, or one-off action as a permanent trait.
append_charat_turns_v2
Apply one already-registered form to the exact current Player session in one scene revision. Select it by formId or an exact formTag. It preserves the same characterId, map, presence and stable portrait slot, updates name/portraits/blink/mouth/tags/icon/theme/pitch together, and returns only the mutation delta. Use this for Charat actions such as changing clothes or returning to the normal form; it is UI state manipulation, never image generation.
set_charat_character_form_v2
Open Charat account authentication from the plugin menu. The card opens the public Charat entrance and connects the same ChatGPT account with one click. No connection code is shown, copied, or sent in chat.
open_charat_account_connection
Use only to correct the latest response after a wrong speakerId or unintended map delta. The original log is retained and marked superseded; Charat restores its stored pre-response scene checkpoint, applies the corrected turns, and commits the replacement log, displaySlots, character presence, expressions, currentMapId, playback pointer, and one revision atomically. It refuses older responses so later scene changes cannot be overwritten. CHARACTER RESOLUTION LOCK: character operations never route on a hard-coded character name. When the user supplies a registered characterId, use that exact id. When the user supplies a name or registered alias and the exact id is not already available in the latest Charat result, call resolve_charat_character_v2 once and use only its unique exact characterId/speakerId. Never choose among ambiguous matches or substitute a visually similar character. A normal registered character uses exact-id presence/form/move/turn operations. A saved true mob that is already present uses its returned speakerId for append; only an absent saved mob uses its existing mobInstanceId with reenter_charat_mob_v2. A generatorOnly record is a preset and may only be supplied as generatorCharacterId to spawn_charat_mob_v2; it can never speak or enter. CHARACTER IDENTITY LOCK: every character turn must include one exact registered speakerId. Resolve the registered name, allowed aliases, face, expression, mouth, emotion effects, first-person pronoun, address terms, and voice again from that same speakerId for every turn. Never inherit any persona or visual state from the preceding speaker. speakerTag/displayTag are validation-only aliases of that same character and may never name another character.
correct_charat_turn_v2
Delete one current Charat character by exact id. Historical logs keep their saved character snapshots.
delete_charat_character
Delete one current Charat map by exact id. Historical logs keep their saved map snapshots.
delete_charat_map
Delete one Charat memory entry. Uploaded illustration and text assets remain available to other entries.
delete_charat_memory
Permanently delete one Charat response log by exact id.
delete_charat_log
Use exactly once only when the current user explicitly asks to disconnect Charat. Sets the exact session to connected: false and preserves account linkage, saved characters, settings, assets, and logs, but permanently cleans up unkept session-lifetime temporary mobs and their forms and memory indexes. This does not close the UI; the outer ChatGPT host owns view closing.
disconnect_charat_v2
Legacy compatibility alias. Use exactly once only when the current user explicitly asks to disconnect Charat. Sets the supplied session, or the latest connected Charat session when omitted, to connected: false; it preserves saved account content but permanently cleans up unkept session-lifetime temporary mobs and does not close the UI.
disconnect_charat
Player-only deterministic evaluation for conversation-idle or time-band-change appearances. It returns candidate, schedule, block, roll, threshold, visit, and result traces, and persists a new scene revision only when the physical scene or the semantic decision changes.
evaluate_charat_auto_entry
Find up to 12 registered memories by title, tag, alias, or keyword. Returns compact metadata only; use recall_charat_memory to read the body or scene text.
find_charat_memories
Use this only when an existing generated mob must be resolved and its exact mobInstanceId is not already available. For contextual references such as 「さっきのモブ」, always pass the exact current sessionId and choose only a unique, non-forgotten, non-promoted mob that allows re-entry. Search by name, template, role, origin, speech, personality, map, session, status, and compact memories. If the unique mob is present, use its speakerId directly; if absent, use reenter_charat_mob_v2. Ambiguous matches require clarification and never cause a new spawn.
find_charat_mobs
Retire one temporary mob from automatic search and re-entry while retaining an auditable forgotten record.
forget_charat_mob
Admin/app compatibility entry for one deterministic NPC. Model-authored natural conversation must use spawn_charat_mob_v2 instead. The generator target itself never appears and runtime image generation is never used.
generate_charat_mob
Read a deterministic compact summary of one Charat session without opening a UI. The default excludes character, map, memory, asset, log, and settings registries; request only the sections needed with include.
get_charat_state
Read diagnostics for one exact Charat session. Built-in mob preset portraits are valid assets; normal characters, generator-only presets, and true mobs use separate completeness rules.
get_charat_diagnostics
Read the compact saved-form index for one registered character in the exact current session. Returns formId, formName, formTags, activeFormId and defaultFormId without opening or redrawing the Player.
list_charat_character_forms_v2
Move to any registered Charat map while preserving presence, movement type, transition, and optional special-state policy. A connection or hotspot is optional; when present it supplies adjacency, route wording, and the default travel style. The initialized companionParty roster moves by default, independently from the three portrait slots; movingCharacterIds is a one-movement override. Only an older uninitialized session uses the visible regular-cast fallback. A true mob travels by default only after the user explicitly added that exact mob to companionParty.
move_charat_map
Open Charat's fullscreen-oriented management UI for characters, expression images, maps, memories, narration, audio, themes, fonts, and response logs. Opening the private card creates a short-lived account-scoped widget access grant but does not change saved creative content.
open_charat_admin
Use this exactly once for the user's explicit initial launch of Charat. Never call open again because accepted=true/rendered=false: wait for its ACK or query state/diagnostics. Same responseId retries address the same instance; use one assistantTurnId throughout this assistant turn. A changed payload under the same responseId is an error. Opening this card never retires any existing Charat card. It joins the account's current concrete session so PC and phone share one scene; each distinct explicit opening receives a distinct playerInstanceId; an identical retry reuses its original instance. Always include one stable responseId and at least one complete character reply or [ナレーター] narration in turns. Both fields are required by the schema; an empty payload is rejected before any player instance is created. The immediate result means accepted only; rendered stays false until that same playerInstanceId reports a committed render for the same open response. Use resume_charat_player to reopen an exact existing session without new dialogue. Never call this tool to change fullscreen or repair display state; those changes stay inside the current player DOM. Every character turn requires its exact registered speakerId. CHARACTER RESOLUTION LOCK: character operations never route on a hard-coded character name. When the user supplies a registered characterId, use that exact id. When the user supplies a name or registered alias and the exact id is not already available in the latest Charat result, call resolve_charat_character_v2 once and use only its unique exact characterId/speakerId. Never choose among ambiguous matches or substitute a visually similar character. A normal registered character uses exact-id presence/form/move/turn operations. A saved true mob that is already present uses its returned speakerId for append; only an absent saved mob uses its existing mobInstanceId with reenter_charat_mob_v2. A generatorOnly record is a preset and may only be supplied as generatorCharacterId to spawn_charat_mob_v2; it can never speak or enter. CHARACTER IDENTITY LOCK: every character turn must include one exact registered speakerId. Resolve the registered name, allowed aliases, face, expression, mouth, emotion effects, first-person pronoun, address terms, and voice again from that same speakerId for every turn. Never inherit any persona or visual state from the preceding speaker. speakerTag/displayTag are validation-only aliases of that same character and may never name another character. COMPACT OBSERVER VOICE LOCKS (no long personality field): カミル=一人称「私」、丁寧で祈りに近い語り、リコル/かみさま/貴女。スクーダ=一人称「僕」、冷静で皮肉を含む記録者口調、リコル。ユウ=一人称「おれ」、語尾「~ッス」、リコルは「姉さん」。リョウ=一人称「わたし」、毒を含む丁寧語、リコルは「姉さま」。レヴェル=一人称「俺」、乾いた静かな口調、リコル。各ターンでspeakerIdから一つだけ選び、前話者の規則を混ぜない。 TWIGA SPEECH LOCK: トゥイガ/Twigaは成人男性キャラクター。一人称は必ず「わー」。明るく可愛い琉球少年口調で「はいさーい」「~さぁ」「~ねぇ」を自然に使う。レヴェルは必ず「兄さん」と呼び、リコルは「リコル」「鍵持ちさん」「あんた」のいずれかで呼ぶ。「僕」「俺」「私」は一人称に使わず、低音の取り立て屋口調や一般的な男性口調へ寄せない。 MOB GENERATION LOCK: a character with mobGenerator enabled is a generator target only and must never speak, enter, or occupy a portrait slot itself. Without opening a form or asking for confirmation, treat natural appearance requests such as 「村人」「街の人」「あそこの人」「受付の人」「店員」「兵士」「スタッフ」「知らない端末」「知らないモブプリセット」「通りすがりの人」「知らないモンスター」「モンスターが出てきた」「村人ひとり来て」「会議室に端末ひとり」「そのへんの人に聞いてみる」「知らない人が入ってきた」「村人3人」 as new-NPC intent when no registered character or saved mob is identified. For an unnamed new, another, different, generic-role, or never-met person/creature, call spawn_charat_mob_v2 once with the exact sessionId, one stable responseId, and count when quantity is stated. Put an explicitly stated generic noun such as 受付担当, 兵士, 店員, or モンスター in role, not desiredName; desiredName is only an explicit unique proper name. Explicit role/origin always wins and place inference is only for omitted details. Set templateId=monster for an explicitly unknown monster or creature so it receives the non-human portrait preset. Omit mapId to use the current map. Unless the user explicitly requests a child or selects a child generator, choose an adult preset and never default to child; youth_male/youth_female are adults in their 20s. Infer contextual roles: village/city=villager/resident/traveler/merchant, meeting room=staff/soldier/terminal/aide, tavern=clerk/customer/regular, reception=receptionist/guide/visitor, military facility=soldier/operator/maintenance staff, dungeon/outdoors=monster/adventurer/traveler. Use only each returned speakerId for that generated individual. A saved mob name/mobInstanceId or contextual reference such as 「さっきのモブ」「さっきの受付の人」 uses find_charat_mobs only when needed, then uses its returned speakerId immediately if present or reenter_charat_mob_v2 if absent; never spawn a duplicate. A normal registered character name or alias is not a mob and follows CHARACTER RESOLUTION LOCK. With zero to two portraits visible, never request a replacement: fill an empty slot and preserve every existing participant. Only when all three slots are full and the user explicitly names a seat exchange may replaceCharacterId be passed; otherwise overflow NPCs remain same-map and conversationally available. True mobs never join an omitted map movement or auto-enter merely because a map changed or a slot is empty. After an explicit exit they remain absent until the user explicitly refers to that saved individual and reenter_charat_mob_v2 restores the same mobInstanceId. Each new true mob receives stable mobInstanceId, characterId, speakerId, seed, appearance, name and persona. When a generated mob gains a stable role, relationship, knowledge, preference, identity, or speech trait during the current reply, include one source-grounded mobMemoryUpdates entry in append_charat_turns_v2. Never store a momentary mood, clothing, injury, or one-off action as a permanent trait. Do not call append_charat_turns in the same assistant turn. Keep dialogue inside Charat. If the user reports a missing UI, explain that acceptance is not a confirmed display and offer browserUrl; never claim the player opened without its card-local render ACK.
open_charat_player
Promote a temporary mob into a new permanent character id while historical mob turns retain their original snapshot.
promote_charat_mob
Resolve one already-generated mob by its exact saved name or mobInstanceId and place that same individual back into the current scene only after an explicit user reference. It never creates a mob, rerolls identity, auto-follows a map move, or re-enters merely because a slot is empty. With fewer than three visible portraits it uses an empty slot and ignores accidental replacement input. Only a user-explicit exchange at three full slots may replace another character. Ledger, scene presence, canonical participants, display slots and entry state commit in one revision and return only a delta. If a name is ambiguous, ask the user instead of spawning anything.
reenter_charat_mob_v2
Actually read and index a registered memory's SD/MD/TXT source, returning one bounded scene as reference material. Call this before claiming the memory was read.
recall_charat_memory
Reappear an exact historical mob with the same mobInstanceId, appearanceSeed, personaSeed and compact memories.
spawn_historical_charat_mob
Preferred V2 replay tool. Queue one saved Charat response log for replay in the exact open player session.
replay_charat_log_v2
Compatibility alias. Prefer replay_charat_log_v2. When sessionId is unavailable, the exact saved log id safely resolves its originating session.
replay_charat_log
Use this when the user names a registered Charat character or alias but its exact characterId/speakerId is not already available. It performs exact normalized matching across registered IDs, names, aliases, and form aliases in the exact current session, returns one compact match, and never substitutes a similar character. Ambiguous matches stay unresolved. A saved mob already present uses append with its returned speakerId; an absent saved mob keeps its mobInstanceId and uses reenter_charat_mob_v2. A generator-only preset can only be passed to spawn_charat_mob_v2 and can never speak or appear. Do not use this for generic unknown roles such as a villager, clerk, passerby, staff member, unknown terminal, or unknown monster; those are new-mob intents for spawn_charat_mob_v2.
resolve_charat_character_v2
Compatibility tool for reopening one exact existing session without creating another session. All cards remain available; reopening never makes an older card read-only or exited. Do not use this for routine connection maintenance.
resume_charat_player
Create or update one Charat character. Tags are exact speaker aliases and specialExpressionTags are exact per-character triggers for the special portrait. A normal portrait is required. The optional nameplate icon is PNG or emoji, and themeColor controls the character nameplate. Set mobGenerator to mark this record as a generator-only target; the target itself can never speak or enter the stage.
save_charat_character
Save the current appearance and presentation as a named form of the same rootCharacterId. Forms do not create another person.
save_charat_character_form
Assign or clear a generic BGM/SE role, tags, intensity, fades, volume, cooldown, concurrency, and priority on one registered audio asset.
save_charat_audio_profile
Create or update one Charat place preset with exact tags, a background, optional BGM, built-in ambience, time-band character associations, focus point, and optional route connections. Connections enrich adjacency and travel narration but are not required for movement.
save_charat_map
Create or update a Charat memory with a title, exact tags, associated map, optional illustration, and optional SD/MD/TXT log asset.
save_charat_memory
Change UI appearance with this single tool: theme selects the palette, themeScope=global overrides map/log themes without moving the scene, themeEffectSet selects independent decoration, and performanceMode=eco (default) minimizes motion. Read get_charat_state with include=[settings] to inspect saved preferences. Random spawn stays OFF until explicitly enabled in socialBehavior.global. Map travel follows the companion party; the legacy movementRollEnabled setting does not trigger a lottery. Also saves font, audio, and independent [ナレーター] settings. Only send requested fields. If explicitly changing currentMapId, pass expectedSceneRevision; ordinary movement uses move_charat_map.
save_charat_settings
Use this when ordinary conversation introduces an unnamed new person or creature, including 「村人」「街の人」「あそこの人」「受付の人」「店員」「兵士」「スタッフ」「知らない端末」「通りすがりの人」「知らないモンスター」「モンスターが出てきた」「村人3人」. Create one or more new true mob instances from enabled character-registry generator targets without asking for a form, confirmation, or template UI. Put a stated generic role in role rather than desiredName; desiredName is only a unique proper name. Explicit role/origin always wins and place inference applies only when omitted. Set templateId=monster for an explicitly unknown monster or creature. Omitted mapId means the current map; omitted template defaults to an adult preset (youth_male or youth_female) and never child. Infer role and origin from village/city, meeting room, tavern, reception, military facility, dungeon, or outdoors when omitted. Every individual receives a unique stable mobInstanceId, characterId and speakerId; use only the returned speakerId for dialogue. The same responseId is idempotent and cannot be reused with a different count. With fewer than three visible portraits, omit replaceCharacterId and use an empty slot; the server also ignores an accidental replacement request while capacity remains. Only a user-explicit exchange at three full slots may set replaceCharacterId, in which case generation, ledger registration, exit and entry commit in one transaction and one scene revision. Overflow mobs remain same-map. Do not use this for a normal registered character, an existing saved mob name/id, 「さっきのモブ」, or 「さっきの受付の人」; use the present saved mob's speakerId or re-enter the absent saved individual instead.
spawn_charat_mob_v2
Move one registered character between on-screen, same-map, adjacent, other-floor, and away states for this exact player session. Portrait placement is handled automatically as a simple three-person row.
set_charat_character_presence
Update the persistent companion party independently from the three portrait slots and scene presence. Use exact registered character ids for natural instructions such as 「ユウと一緒に行く」「つーちゃんも連れてく」「ユウはここで待ってて」「この子も同行」「この人はここに残って」. add/remove preserve existing members, replace sets the exact ordered party, and clear makes an explicitly empty party. A true mob joins only when the current user explicitly identifies that exact saved mob as a companion; never add a generated mob merely because it is visible or speaking. This tool changes only the party roster in one session revision and never moves, summons, removes, or rearranges a portrait.
set_charat_companion_party_v2
Rename, keep, configure re-entry, adjust speech presets, or append a compact memory index to one temporary mob.
update_charat_mob
Atomically enter or exit multiple registered characters in one revision. Only the named character IDs are reset; the stage, background, BGM, input, logs, and other characters remain.
set_charat_characters_presence
Charat ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Charat's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.