import type { ConfigRecipeName } from "./config-recipes.js"; import type { McpToolName } from "./observability-catalog.js"; import type { SetupPresetName } from "./setup-presets.js"; export declare const MIGRATION_SOURCE_IDS: readonly ["cappyeo@0.25.0", "hypark@0.1.1", "jaimen-bell@0.1.1", "oratorian@1.1.4", "pasympa@2.1.1", "targeted-reader@1.0.0"]; export type MigrationSourceId = typeof MIGRATION_SOURCE_IDS[number]; export type MigrationAuditFidelity = "tagged-source" | "version-matched-public-source"; export type MigrationDisposition = "intentionally-excluded" | "review-required" | "supported"; export interface MigrationGroupDefinition { readonly disposition: MigrationDisposition; readonly id: string; readonly instruction: string; readonly outcome: string; readonly recipes: readonly ConfigRecipeName[]; readonly sourceNames?: readonly string[]; readonly sourcePrefixes?: readonly string[]; readonly targetTools: readonly McpToolName[]; readonly trustChange: string; } export interface MigrationSourceDefinition { readonly auditFidelity: MigrationAuditFidelity; readonly auditedInventoryDigest: `sha256:${string}`; readonly baselinePreset: SetupPresetName; readonly evidenceUrl: string; readonly groups: readonly MigrationGroupDefinition[]; readonly id: MigrationSourceId; readonly limitations: readonly string[]; readonly product: string; readonly registryName: string; readonly registryUrl: string; readonly sourceTools: readonly string[]; readonly version: string; } export declare const MIGRATION_SOURCE_DEFINITIONS: readonly [{ readonly auditFidelity: "tagged-source"; readonly auditedInventoryDigest: "sha256:dab2107a16da8e9738281c2db287a13dadfff5d82abe8e796cd7bd8b9f166a92"; readonly baselinePreset: "channel-reader"; readonly evidenceUrl: "https://github.com/cappyeo/discord-mcp/tree/1d1390c44c58c8b8d6af6624f9b319e535475292"; readonly groups: readonly [{ readonly disposition: "review-required"; readonly id: "application"; readonly instruction: "Re-select each application-owned asset or monetization outcome against the pinned current application; reviewed changes replace direct mutation."; readonly outcome: "Application identity, Activity, assets, monetization, and bot profile"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["app_emojis_", "application_", "entitlements_", "skus_", "subscriptions_"]; readonly targetTools: readonly ["audit_application_entitlements", "audit_application_posture", "audit_application_role_connection_metadata", "audit_application_skus", "audit_application_subscriptions", "get_application_emoji", "get_application_entitlement", "get_current_bot_profile", "inspect_application_activity_instance", "list_application_emojis", "plan_application_emoji_change", "execute_application_emoji_change", "plan_application_role_connection_metadata_change", "execute_application_role_connection_metadata_change", "plan_bot_profile_change", "execute_bot_profile_change"]; readonly trustChange: "Caller-selected application operations become pinned-current-application reads or reviewed changes with exact readback."; }, { readonly disposition: "supported"; readonly id: "audit-and-permissions"; readonly instruction: "Use exact-guild audit and permission explanation tools after activating explicit read scope."; readonly outcome: "Audit-log and permission inspection"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["audit_log_", "permissions_"]; readonly targetTools: readonly ["audit_channel_role_access", "explain_channel_access", "explain_principal_permissions", "list_guild_audit_entries", "get_guild_audit_entry"]; readonly trustChange: "Results are bounded, identity-verified, and projected through the connector privacy boundary."; }, { readonly disposition: "review-required"; readonly id: "automod"; readonly instruction: "Audit exact rules first, then use the plan and execute pair for one acknowledged change."; readonly outcome: "AutoMod inspection and changes"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["automod_"]; readonly targetTools: readonly ["get_automod_rule", "list_automod_rules", "plan_automod_change", "execute_automod_change", "verify_automod_change"]; readonly trustChange: "Immediate rule mutation becomes a fresh reviewed lifecycle with durable evidence and exact verification."; }, { readonly disposition: "review-required"; readonly id: "channels-and-threads"; readonly instruction: "Start with channel-reader scope, then enable only the exact channel or thread workflow needed through the config workbench."; readonly outcome: "Channel, forum, thread, permission, and typing operations"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["channels_", "threads_"]; readonly targetTools: readonly ["get_channel", "list_channels", "list_channel_permission_overwrites", "plan_channel_clone", "execute_channel_clone", "plan_channel_creation", "execute_channel_creation", "plan_channel_deletion", "execute_channel_deletion", "plan_channel_metadata_change", "execute_channel_metadata_change", "plan_channel_order", "execute_channel_order", "plan_channel_permission_overwrite", "execute_channel_permission_overwrite", "plan_channel_permission_sync", "execute_channel_permission_sync", "list_active_threads", "list_archived_threads", "get_thread_membership", "get_thread_state", "plan_thread_change", "execute_thread_change", "plan_forum_post", "execute_forum_post", "signal_command_processing"]; readonly trustChange: "Raw mutations and free typing signals become exact-scope reviewed or command-bound operations."; }, { readonly disposition: "review-required"; readonly id: "application-commands"; readonly instruction: "Audit the pinned application's command inventories, then use the matching global or guild reviewed lifecycle."; readonly outcome: "Application command inspection and replacement"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["commands_"]; readonly targetTools: readonly ["audit_application_commands", "plan_global_application_command_change", "execute_global_application_command_change", "plan_guild_application_command_change", "execute_guild_application_command_change"]; readonly trustChange: "Direct command CRUD becomes complete inventory review bound to the pinned application."; }, { readonly disposition: "review-required"; readonly id: "components"; readonly instruction: "Compile a typed bundled template when it fits or rebuild the bounded layout locally, inspect every link destination, configure each exact canonical HTTPS origin, then review, execute, and verify the exact message operation."; readonly outcome: "Components v2 composition and delivery"; readonly recipes: readonly ["channel-publisher"]; readonly sourcePrefixes: readonly ["components_v2_"]; readonly targetTools: readonly ["compile_component_template", "preview_component_layout", "plan_component_message", "execute_component_message", "verify_component_message"]; readonly trustChange: "A free-form or interpolated component send becomes typed local compilation or a schema-bounded callback-free preview, exact first-hop link-origin policy, and a reviewed one-shot lifecycle."; }, { readonly disposition: "review-required"; readonly id: "expressions-and-soundboard"; readonly instruction: "Inspect the exact guild asset first, then select the matching expression, application emoji, soundboard-change, or guarded playback workflow."; readonly outcome: "Emoji, sticker, and soundboard operations"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["emojis_", "soundboard_", "stickers_"]; readonly targetTools: readonly ["get_guild_emoji", "get_guild_sticker", "list_default_soundboard_sounds", "list_guild_emojis", "list_guild_soundboard_sounds", "list_guild_stickers", "plan_guild_expression_change", "execute_guild_expression_change", "plan_guild_soundboard_change", "execute_guild_soundboard_change", "check_soundboard_playback", "play_soundboard_sound"]; readonly trustChange: "Asset writes and playback gain exact source and target scope, review, replay safety, and readback."; }, { readonly disposition: "review-required"; readonly id: "events-stage-and-voice"; readonly instruction: "Use the matching exact-guild read or reviewed scheduled-event, Stage, member-voice, or voice-status lifecycle."; readonly outcome: "Scheduled events, Stage instances, voice state, and regions"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["events_", "stage_instances_", "voice_"]; readonly targetTools: readonly ["get_scheduled_event", "list_scheduled_events", "list_scheduled_event_users", "plan_scheduled_event_change", "execute_scheduled_event_change", "get_stage_instance", "list_stage_instances", "plan_stage_instance_change", "execute_stage_instance_change", "get_member_voice_state", "plan_member_voice_change", "execute_member_voice_change", "list_voice_regions"]; readonly trustChange: "Caller-directed state changes become exact-ID reviewed operations with permission and state evidence."; }, { readonly disposition: "review-required"; readonly id: "guild-lifecycle"; readonly instruction: "Choose the narrow audit or reviewed guild workflow; use guild-builder only when migrating a scaffold or blueprint outcome."; readonly outcome: "Guild profile, community, onboarding, templates, roles, integrations, pruning, and blueprint operations"; readonly recipes: readonly ["guild-builder"]; readonly sourcePrefixes: readonly ["guild_", "onboarding_", "roles_", "templates_"]; readonly targetTools: readonly ["get_guild_profile", "get_guild_vanity_url", "get_guild_welcome_screen", "get_guild_widget_settings", "list_guild_integrations", "list_guild_templates", "list_guild_voice_regions", "list_roles", "preview_guild_blueprint", "capture_guild_blueprint", "plan_guild_blueprint", "execute_guild_blueprint", "verify_guild_blueprint", "plan_guild_profile_change", "execute_guild_profile_change", "plan_guild_welcome_screen_change", "execute_guild_welcome_screen_change", "plan_guild_widget_settings_change", "execute_guild_widget_settings_change", "plan_guild_prune", "execute_guild_prune", "plan_guild_integration_deletion", "execute_guild_integration_deletion", "plan_role_creation", "execute_role_creation", "plan_role_configuration", "execute_role_configuration", "plan_role_deletion", "execute_role_deletion", "plan_role_order", "execute_role_order"]; readonly trustChange: "Broad direct guild mutation splits into narrow capabilities with fresh plans, durable coordination, and exact readback."; }, { readonly disposition: "intentionally-excluded"; readonly id: "embedded-intelligence"; readonly instruction: "Keep reasoning in the MCP host or chosen model provider and pass only the deliberate Discord operation to this connector."; readonly outcome: "Embedded AI and third-party emoji search"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["inspiration_", "intelligence_"]; readonly targetTools: readonly []; readonly trustChange: "The connector remains model-neutral and does not send Discord content to an implicit model or unrelated search provider."; }, { readonly disposition: "review-required"; readonly id: "interactions"; readonly instruction: "Use native Interaction ingress and one-shot continuations; never pass a reusable Discord interaction token through MCP input."; readonly outcome: "Discord Interaction responses and follow-ups"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["interactions_"]; readonly targetTools: readonly ["list_pending_discord_interactions", "list_discord_interaction_continuations", "respond_to_discord_interaction", "send_discord_interaction_followup", "plan_native_interaction_command", "execute_native_interaction_command"]; readonly trustChange: "Reusable caller-supplied Interaction tokens become broker-private, bounded one-shot continuations."; }, { readonly disposition: "review-required"; readonly id: "invites"; readonly instruction: "Inspect redacted invite evidence or use the exact-channel reviewed creation and exact-invite deletion workflows."; readonly outcome: "Invite inspection, creation, and deletion"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["invites_"]; readonly targetTools: readonly ["get_guild_invite", "list_guild_invites", "plan_invite_creation", "execute_invite_creation", "plan_invite_deletion", "execute_invite_deletion"]; readonly trustChange: "Reusable invite capabilities are redacted by default and mutations require exact scope and review."; }, { readonly disposition: "review-required"; readonly id: "members"; readonly instruction: "Enable only the exact member read, moderation, role, nickname, or bulk workflow required."; readonly outcome: "Member inspection and administration"; readonly recipes: readonly ["incident-response"]; readonly sourcePrefixes: readonly ["members_"]; readonly targetTools: readonly ["get_guild_member", "list_guild_members", "search_guild_members", "get_guild_ban", "list_guild_bans", "plan_member_moderation", "execute_member_moderation", "plan_bulk_guild_ban", "execute_bulk_guild_ban", "plan_member_role_change", "execute_member_role_change", "plan_bulk_member_role_change", "execute_bulk_member_role_change", "plan_member_nickname_change", "execute_member_nickname_change", "plan_guild_prune", "execute_guild_prune"]; readonly trustChange: "Immediate member mutations gain protected-user boundaries, complete hierarchy proof, review, and exact readback."; }, { readonly disposition: "review-required"; readonly id: "messages-reactions-and-polls"; readonly instruction: "Use channel-reader for reads, message-channel for plain sends or own-message edits, and channel-publisher only for broader reaction, component, or embed outcomes; destructive operations retain separate review."; readonly outcome: "Message, reaction, thread, pin, crosspost, and poll operations"; readonly recipes: readonly ["channel-publisher", "message-channel"]; readonly sourcePrefixes: readonly ["messages_", "polls_", "reactions_"]; readonly targetTools: readonly ["get_message", "list_message_pins", "list_message_replies", "read_messages", "recall_conversation", "search_messages", "send_message", "edit_own_message", "plan_message_deletion", "delete_messages", "plan_message_pin", "execute_message_pin", "plan_message_forward", "execute_message_forward", "plan_announcement_crosspost", "execute_announcement_crosspost", "plan_thread_creation", "execute_thread_creation", "plan_embed_message", "execute_embed_message", "add_reaction", "add_reactions", "remove_own_reaction", "list_message_reactions", "list_reaction_users", "plan_reaction_moderation", "execute_reaction_moderation", "get_poll", "list_poll_answer_voters", "plan_poll_end", "execute_poll_end"]; readonly trustChange: "Message writes add explicit mention policy, anti-spam controls, replay safety, and content-free receipts."; }, { readonly disposition: "review-required"; readonly id: "orchestration"; readonly instruction: "Replace connector-owned pipelines with host-side progressive discovery, prompts, and explicit tool calls."; readonly outcome: "Intent planning and connector-owned tool pipelines"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_intent_plan", "mcp_pipeline"]; readonly targetTools: readonly []; readonly trustChange: "Planning remains visible to the MCP host instead of adding an opaque connector-side execution layer."; }, { readonly disposition: "review-required"; readonly id: "users-and-custody"; readonly instruction: "Use pinned bot-profile and installation audits, the direct-message recipe, or the reviewed departure workflow as appropriate."; readonly outcome: "Current-user, guild inventory, direct-message creation, and guild departure"; readonly recipes: readonly ["direct-messenger"]; readonly sourcePrefixes: readonly ["users_"]; readonly targetTools: readonly ["get_current_bot_profile", "audit_bot_installations", "plan_bot_profile_change", "execute_bot_profile_change", "plan_direct_message_change", "execute_direct_message_change", "plan_guild_departure", "execute_guild_departure"]; readonly trustChange: "Bot identity is pinned, DM authority is exact-user scoped, and guild departure becomes separately reviewed and recoverable."; }, { readonly disposition: "review-required"; readonly id: "webhooks"; readonly instruction: "Audit exact guild or channel webhooks, then choose a creation, change, deletion, or message workflow without exposing reusable credentials."; readonly outcome: "Webhook inspection, administration, and message delivery"; readonly recipes: readonly []; readonly sourcePrefixes: readonly ["webhooks_"]; readonly targetTools: readonly ["audit_guild_webhooks", "get_channel_webhook", "get_webhook_message", "list_channel_webhooks", "plan_webhook_creation", "execute_webhook_creation", "plan_webhook_change", "execute_webhook_change", "plan_webhook_deletion", "execute_webhook_deletion", "send_webhook_message", "edit_webhook_message", "plan_webhook_message_deletion", "execute_webhook_message_deletion"]; readonly trustChange: "Webhook tokens remain connector-private capabilities and mutations gain target scope, one-shot coordination, and readback."; }]; readonly id: "cappyeo@0.25.0"; readonly limitations: readonly ["The source release exposes optional HTTP, Gateway, embedded intelligence, and third-party integration modes that are not configuration-compatible with this local stdio connector."]; readonly product: "Cappyeo"; readonly registryName: "io.github.cappyeo/discord-mcp"; readonly registryUrl: "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.cappyeo%2Fdiscord-mcp/versions/0.25.0"; readonly sourceTools: readonly string[]; readonly version: "0.25.0"; }, { readonly auditFidelity: "tagged-source"; readonly auditedInventoryDigest: "sha256:00c78aca6e28791583b97758cf71d0417133653b45136e1362c866a1741fbca7"; readonly baselinePreset: "channel-reader"; readonly evidenceUrl: "https://github.com/hypark5540/discord-mcp/tree/4f7672b0a02f97f7f260eef128f8bf6747574826"; readonly groups: readonly [{ readonly disposition: "supported"; readonly id: "identity-and-guild-reads"; readonly instruction: "Create a read-only exact-scope policy and use the corresponding bounded identity, guild, and channel reads."; readonly outcome: "Bot, guild, and channel inspection"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_get_bot", "discord_get_channel", "discord_get_guild", "discord_list_channels", "discord_list_guilds"]; readonly targetTools: readonly ["get_current_bot_profile", "get_channel", "get_guild_profile", "list_channels", "list_guilds"]; readonly trustChange: "The bot is pinned to expected application and bot IDs, with separate exact read scope."; }, { readonly disposition: "supported"; readonly id: "message-reads"; readonly instruction: "Use the channel-reader preset and bounded exact-channel message reads."; readonly outcome: "Message list and exact-message reads"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_get_message", "discord_get_messages"]; readonly targetTools: readonly ["get_message", "read_messages"]; readonly trustChange: "Message results retain exact scope and a stricter minimized projection with no connector persistence."; }, { readonly disposition: "review-required"; readonly id: "own-message-writes"; readonly instruction: "Add message-channel only for exact target channels; keep sends and own-message edits replay-safe and use reviewed deletion."; readonly outcome: "Send, edit-own, and delete-own message operations"; readonly recipes: readonly ["message-channel"]; readonly sourceNames: readonly ["discord_delete_own_message", "discord_edit_own_message", "discord_send_message"]; readonly targetTools: readonly ["send_message", "edit_own_message", "plan_message_deletion", "delete_messages"]; readonly trustChange: "The existing nonce and mention safeguards gain explicit plan review where destructive, durable coordination, and content-free receipts."; }]; readonly id: "hypark@0.1.1"; readonly limitations: readonly ["The source release's optional writes are represented as migration outcomes only; its environment-policy shape is not imported."]; readonly product: "Hypark"; readonly registryName: "io.github.hypark5540/discord-mcp"; readonly registryUrl: "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.hypark5540%2Fdiscord-mcp/versions/0.1.1"; readonly sourceTools: readonly string[]; readonly version: "0.1.1"; }, { readonly auditFidelity: "version-matched-public-source"; readonly auditedInventoryDigest: "sha256:4d734a2df79ad658071f5d89c5fb2f9f344195ebef08dda9fbfcad194394cef4"; readonly baselinePreset: "server-observer"; readonly evidenceUrl: "https://github.com/jaimenbell/discord-mcp/tree/3fb0bec658a00c198d1112e2e3eabebbc6990284"; readonly groups: readonly [{ readonly disposition: "supported"; readonly id: "guild-structure-reads"; readonly instruction: "Use server-observer to inspect exact channel, role, overwrite, and member-role evidence."; readonly outcome: "Channel, category, role, permission, and member-role inspection"; readonly recipes: readonly []; readonly sourceNames: readonly ["get_channel_permission_overwrites", "get_member_roles", "list_categories", "list_channels", "list_roles"]; readonly targetTools: readonly ["list_channels", "list_roles", "list_channel_permission_overwrites", "get_guild_member"]; readonly trustChange: "Reads become pinned-identity, exact-guild operations with bounded privacy projections."; }, { readonly disposition: "review-required"; readonly id: "channel-and-role-administration"; readonly instruction: "Replace the shared write switch with the exact channel or role lifecycle and explicit policy scope."; readonly outcome: "Channel and role creation, editing, and channel deletion"; readonly recipes: readonly []; readonly sourceNames: readonly ["create_channel", "create_role", "delete_channel", "edit_channel", "edit_role"]; readonly targetTools: readonly ["get_channel", "list_channels", "list_channel_permission_overwrites", "plan_channel_clone", "execute_channel_clone", "plan_channel_creation", "execute_channel_creation", "plan_channel_deletion", "execute_channel_deletion", "plan_channel_metadata_change", "execute_channel_metadata_change", "plan_channel_order", "execute_channel_order", "plan_channel_permission_overwrite", "execute_channel_permission_overwrite", "plan_channel_permission_sync", "execute_channel_permission_sync", "plan_role_creation", "execute_role_creation", "plan_role_configuration", "execute_role_configuration"]; readonly trustChange: "A global write gate becomes capability-specific scope, fresh review, durable coordination, and exact readback."; }, { readonly disposition: "review-required"; readonly id: "guild-profile"; readonly instruction: "Use the reviewed exact-guild profile lifecycle and its bounded local asset inputs."; readonly outcome: "Guild profile editing"; readonly recipes: readonly []; readonly sourceNames: readonly ["edit_guild"]; readonly targetTools: readonly ["get_guild_profile", "plan_guild_profile_change", "execute_guild_profile_change"]; readonly trustChange: "Free-form guild patching becomes a typed, identity-bound, reviewed change with exact readback."; }, { readonly disposition: "review-required"; readonly id: "message-publishing"; readonly instruction: "Add message-channel only for exact target channels and use replay-safe sends with explicit mention policy."; readonly outcome: "Message posting"; readonly recipes: readonly ["message-channel"]; readonly sourceNames: readonly ["create_message"]; readonly targetTools: readonly ["send_message"]; readonly trustChange: "A global write gate becomes exact-channel scope, anti-spam controls, nonce replay safety, and content-free receipts."; }]; readonly id: "jaimen-bell@0.1.1"; readonly limitations: readonly ["The exact PyPI release and matching commit-pinned public source were audited, but the project did not publish a source tag for this version."]; readonly product: "Jaimen Bell"; readonly registryName: "io.github.jaimenbell/discord-mcp"; readonly registryUrl: "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.jaimenbell%2Fdiscord-mcp/versions/0.1.1"; readonly sourceTools: readonly string[]; readonly version: "0.1.1"; }, { readonly auditFidelity: "tagged-source"; readonly auditedInventoryDigest: "sha256:731c19148881157e5a193234ee1d5c4a986dc56f407286d718b9af94a684f628"; readonly baselinePreset: "channel-reader"; readonly evidenceUrl: "https://github.com/Oratorian/discord-node-mcp/tree/fbea69d69751858a5e6813022b5f6424a80a2292"; readonly groups: readonly [{ readonly disposition: "supported"; readonly id: "guild-and-channel-reads"; readonly instruction: "Use exact-scope read tools for guild, channel, member, role, permission, audit, and pinned-message inspection."; readonly outcome: "Guild, channel, member, role, permission, audit, and pin reads"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_get_audit_log", "discord_get_channel", "discord_get_channel_permissions", "discord_get_guild", "discord_get_member", "discord_get_messages", "discord_get_pinned_messages", "discord_list_bans", "discord_list_channels", "discord_list_guilds", "discord_list_members", "discord_list_roles"]; readonly targetTools: readonly ["get_channel", "get_guild_profile", "get_guild_member", "list_channels", "list_guilds", "list_guild_members", "list_roles", "read_messages", "list_message_pins", "list_channel_permission_overwrites", "list_guild_audit_entries", "list_guild_bans"]; readonly trustChange: "Reads become pinned-identity, bounded, and privacy-projected within exact local scope."; }, { readonly disposition: "review-required"; readonly id: "channels-and-permissions"; readonly instruction: "Select the exact channel structural, overwrite, or parent-sync lifecycle instead of direct modification."; readonly outcome: "Channel creation, edits, deletion, and permission synchronization"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_channel", "discord_delete_channel", "discord_edit_channel", "discord_remove_channel_permissions", "discord_set_channel_permissions", "discord_sync_channel_permissions"]; readonly targetTools: readonly ["get_channel", "list_channels", "list_channel_permission_overwrites", "plan_channel_clone", "execute_channel_clone", "plan_channel_creation", "execute_channel_creation", "plan_channel_deletion", "execute_channel_deletion", "plan_channel_metadata_change", "execute_channel_metadata_change", "plan_channel_order", "execute_channel_order", "plan_channel_permission_overwrite", "execute_channel_permission_overwrite", "plan_channel_permission_sync", "execute_channel_permission_sync"]; readonly trustChange: "Direct channel writes gain topology, capacity, hierarchy, plan freshness, one-shot coordination, and exact readback."; }, { readonly disposition: "review-required"; readonly id: "messages-and-reactions"; readonly instruction: "Use message-channel for plain sends or own-message edits and channel-publisher for reaction or component outcomes; retain reviewed routes for message deletion and pins."; readonly outcome: "Messages, reactions, and pins"; readonly recipes: readonly ["channel-publisher", "message-channel"]; readonly sourceNames: readonly ["discord_add_reaction", "discord_delete_message", "discord_edit_message", "discord_pin_message", "discord_remove_reaction", "discord_send_message", "discord_unpin_message"]; readonly targetTools: readonly ["send_message", "edit_own_message", "add_reaction", "add_reactions", "remove_own_reaction", "plan_reaction_moderation", "execute_reaction_moderation", "plan_message_deletion", "delete_messages", "plan_message_pin", "execute_message_pin"]; readonly trustChange: "Message writes become exact-channel, mention-safe, replay-safe, and reviewed when high-impact."; }, { readonly disposition: "review-required"; readonly id: "member-and-role-administration"; readonly instruction: "Use separate role, nickname, member-voice, moderation, prune, and ordering workflows with exact scope."; readonly outcome: "Member moderation, movement, nickname, roles, and pruning"; readonly recipes: readonly ["incident-response"]; readonly sourceNames: readonly ["discord_add_role", "discord_ban_member", "discord_create_role", "discord_delete_role", "discord_edit_role", "discord_kick_member", "discord_move_member", "discord_prune_members", "discord_remove_role", "discord_set_nickname", "discord_set_role_positions", "discord_timeout_member", "discord_unban_member"]; readonly targetTools: readonly ["get_guild_member", "list_guild_members", "search_guild_members", "get_guild_ban", "list_guild_bans", "plan_member_moderation", "execute_member_moderation", "plan_bulk_guild_ban", "execute_bulk_guild_ban", "plan_member_role_change", "execute_member_role_change", "plan_bulk_member_role_change", "execute_bulk_member_role_change", "plan_member_nickname_change", "execute_member_nickname_change", "plan_guild_prune", "execute_guild_prune", "plan_member_voice_change", "execute_member_voice_change", "plan_role_creation", "execute_role_creation", "plan_role_configuration", "execute_role_configuration", "plan_role_deletion", "execute_role_deletion", "plan_role_order", "execute_role_order"]; readonly trustChange: "Immediate member and role writes gain protected-user, hierarchy, freshness, coordination, and readback controls."; }, { readonly disposition: "review-required"; readonly id: "automod"; readonly instruction: "Audit exact AutoMod rules, then plan, execute, and verify one bounded change."; readonly outcome: "AutoMod inspection and changes"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_automod_rule", "discord_delete_automod_rule", "discord_edit_automod_rule", "discord_get_automod_rule", "discord_list_automod_rules"]; readonly targetTools: readonly ["get_automod_rule", "list_automod_rules", "plan_automod_change", "execute_automod_change", "verify_automod_change"]; readonly trustChange: "Direct rule mutation becomes a fresh reviewed lifecycle with durable evidence and exact verification."; }, { readonly disposition: "review-required"; readonly id: "guild-community-and-departure"; readonly instruction: "Use the matching reviewed profile, welcome-screen, onboarding, community, or departure lifecycle."; readonly outcome: "Guild profile, community, onboarding, welcome screen, and departure"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_edit_guild", "discord_edit_onboarding", "discord_edit_welcome_screen", "discord_get_community_settings", "discord_get_onboarding", "discord_get_welcome_screen", "discord_leave_guild", "discord_setup_community", "discord_setup_onboarding"]; readonly targetTools: readonly ["get_guild_profile", "get_guild_onboarding", "get_guild_welcome_screen", "audit_guild_community", "plan_guild_profile_change", "execute_guild_profile_change", "plan_onboarding_change", "execute_onboarding_change", "plan_guild_welcome_screen_change", "execute_guild_welcome_screen_change", "plan_guild_community_change", "execute_guild_community_change", "plan_guild_departure", "execute_guild_departure"]; readonly trustChange: "Broad direct guild changes split into target-specific reviewed lifecycles, and departure gains absence proof and ambiguity quarantine."; }, { readonly disposition: "review-required"; readonly id: "events-invites-webhooks-and-assets"; readonly instruction: "Inspect the exact inventory first, then choose the narrow reviewed event, invite, webhook, emoji, or sticker operation."; readonly outcome: "Events, invites, webhooks, emojis, and stickers"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_emoji", "discord_create_event", "discord_create_invite", "discord_create_webhook", "discord_delete_emoji", "discord_delete_event", "discord_delete_invite", "discord_delete_sticker", "discord_delete_webhook", "discord_edit_webhook", "discord_list_emojis", "discord_list_events", "discord_list_invites", "discord_list_stickers", "discord_list_webhooks"]; readonly targetTools: readonly ["list_guild_emojis", "list_guild_stickers", "list_scheduled_events", "list_guild_invites", "audit_guild_webhooks", "plan_guild_expression_change", "execute_guild_expression_change", "plan_scheduled_event_change", "execute_scheduled_event_change", "plan_invite_creation", "execute_invite_creation", "plan_invite_deletion", "execute_invite_deletion", "plan_webhook_creation", "execute_webhook_creation", "plan_webhook_change", "execute_webhook_change", "plan_webhook_deletion", "execute_webhook_deletion"]; readonly trustChange: "Collection writes become separately scoped, reviewed, non-retried operations with exact inventory readback."; }]; readonly id: "oratorian@1.1.4"; readonly limitations: readonly ["The source release supports both stdio and HTTP; this plan targets migration into local stdio custody and does not recreate remote exposure."]; readonly product: "Oratorian"; readonly registryName: "io.github.Oratorian/discord-node-mcp"; readonly registryUrl: "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.Oratorian%2Fdiscord-node-mcp/versions/1.1.4"; readonly sourceTools: readonly string[]; readonly version: "1.1.4"; }, { readonly auditFidelity: "tagged-source"; readonly auditedInventoryDigest: "sha256:e1815903bf78cff807d4269eaed6b000bb53e1f9e2173fed1144a8c4038c9f9e"; readonly baselinePreset: "channel-reader"; readonly evidenceUrl: "https://github.com/PaSympa/discord-mcp/tree/024655e7d82caca9a88b49cdb1e0ba584845f01d"; readonly groups: readonly [{ readonly disposition: "supported"; readonly id: "server-inspection"; readonly instruction: "Use the read-only baseline to inspect exact guilds, channels, roles, members, permissions, and audit evidence."; readonly outcome: "Guild, channel, role, member, permission, and audit inspection"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_audit_permissions", "discord_find_channel_by_name", "discord_get_audit_log", "discord_get_channel_permissions", "discord_get_guild_info", "discord_get_member_info", "discord_get_role_members", "discord_get_server_stats", "discord_list_channels", "discord_list_guilds", "discord_list_members", "discord_list_roles", "discord_search_members"]; readonly targetTools: readonly ["list_guilds", "get_guild_profile", "list_channels", "get_channel", "list_roles", "get_role", "list_guild_members", "get_guild_member", "search_guild_members", "list_channel_permission_overwrites", "explain_channel_access", "list_guild_audit_entries"]; readonly trustChange: "Reads are exact-scope, identity-bound, bounded, and privacy-projected."; }, { readonly disposition: "review-required"; readonly id: "channel-and-permission-administration"; readonly instruction: "Use the exact target channel lifecycle, with separate review for creation, deletion, movement, metadata, overwrite replacement, or parent sync."; readonly outcome: "Channel creation, cloning, movement, deletion, and permission changes"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_clone_channel", "discord_copy_permissions", "discord_create_channel", "discord_delete_channel", "discord_edit_channel", "discord_lock_channel_permissions", "discord_move_channel", "discord_reset_channel_permissions", "discord_set_channel_position", "discord_set_member_permission", "discord_set_role_permission"]; readonly targetTools: readonly ["get_channel", "list_channels", "list_channel_permission_overwrites", "plan_channel_clone", "execute_channel_clone", "plan_channel_creation", "execute_channel_creation", "plan_channel_deletion", "execute_channel_deletion", "plan_channel_metadata_change", "execute_channel_metadata_change", "plan_channel_order", "execute_channel_order", "plan_channel_permission_overwrite", "execute_channel_permission_overwrite", "plan_channel_permission_sync", "execute_channel_permission_sync"]; readonly trustChange: "Immediate structural writes become exact reviewed workflows with topology, authority, coordination, and readback evidence."; }, { readonly disposition: "review-required"; readonly id: "member-role-and-moderation"; readonly instruction: "Select the narrow role, nickname, moderation, bulk-ban, or prune workflow and configure its exact scope."; readonly outcome: "Member roles, nicknames, moderation, bulk bans, and pruning"; readonly recipes: readonly ["incident-response"]; readonly sourceNames: readonly ["discord_add_role", "discord_ban_member", "discord_bulk_ban", "discord_kick_member", "discord_list_bans", "discord_prune_members", "discord_remove_role", "discord_set_nickname", "discord_timeout_member", "discord_unban_member"]; readonly targetTools: readonly ["get_guild_member", "list_guild_members", "search_guild_members", "get_guild_ban", "list_guild_bans", "plan_member_moderation", "execute_member_moderation", "plan_bulk_guild_ban", "execute_bulk_guild_ban", "plan_member_role_change", "execute_member_role_change", "plan_bulk_member_role_change", "execute_bulk_member_role_change", "plan_member_nickname_change", "execute_member_nickname_change", "plan_guild_prune", "execute_guild_prune"]; readonly trustChange: "Protected-user, hierarchy, plan freshness, signed approval, and exact readback checks replace a shared write gate."; }, { readonly disposition: "review-required"; readonly id: "roles"; readonly instruction: "Inspect the role inventory, then use the separate creation, configuration, order, or deletion lifecycle."; readonly outcome: "Role creation, editing, icon, ordering, and deletion"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_role", "discord_delete_role", "discord_edit_role", "discord_set_role_icon", "discord_set_role_position"]; readonly targetTools: readonly ["list_roles", "get_role", "plan_role_creation", "execute_role_creation", "plan_role_configuration", "execute_role_configuration", "plan_role_order", "execute_role_order", "plan_role_deletion", "execute_role_deletion"]; readonly trustChange: "Role writes are separated by risk and bound to complete hierarchy and exact readback evidence."; }, { readonly disposition: "review-required"; readonly id: "messages-and-reactions"; readonly instruction: "Use channel-reader for reads, message-channel for plain sends or own-message edits, and channel-publisher for broader reaction, component, or embed outcomes; keep deletion, pins, forwarding, crossposts, and threads on their reviewed routes."; readonly outcome: "Messages, embeds, reactions, pins, forwarding, crossposts, and threads"; readonly recipes: readonly ["channel-publisher", "message-channel"]; readonly sourceNames: readonly ["discord_add_reaction", "discord_bulk_delete_messages", "discord_create_thread", "discord_crosspost_message", "discord_delete_message", "discord_edit_embed", "discord_edit_message", "discord_fetch_pinned_messages", "discord_forward_message", "discord_get_reactions", "discord_pin_message", "discord_read_messages", "discord_remove_reactions", "discord_reply_message", "discord_search_messages", "discord_send_embed", "discord_send_message", "discord_send_multiple_embeds"]; readonly targetTools: readonly ["get_message", "list_message_pins", "list_message_replies", "read_messages", "recall_conversation", "search_messages", "send_message", "edit_own_message", "plan_message_deletion", "delete_messages", "plan_message_pin", "execute_message_pin", "plan_message_forward", "execute_message_forward", "plan_announcement_crosspost", "execute_announcement_crosspost", "plan_thread_creation", "execute_thread_creation", "plan_embed_message", "execute_embed_message", "add_reaction", "add_reactions", "list_message_reactions", "list_reaction_users", "plan_reaction_moderation", "execute_reaction_moderation"]; readonly trustChange: "Writes add exact channel policy, explicit mention handling, anti-spam controls, review where needed, and content-free receipts."; }, { readonly disposition: "review-required"; readonly id: "direct-messages"; readonly instruction: "Use the direct-messenger recipe and exact user allowlist, then review each send, edit, reply, or deletion outcome."; readonly outcome: "Direct-message reads and writes"; readonly recipes: readonly ["direct-messenger"]; readonly sourceNames: readonly ["discord_delete_dm", "discord_edit_dm", "discord_edit_dm_embed", "discord_read_dms", "discord_reply_dm", "discord_send_dm", "discord_send_dm_embed"]; readonly targetTools: readonly ["list_direct_messages", "get_direct_message", "plan_direct_message_change", "execute_direct_message_change", "verify_direct_message_change"]; readonly trustChange: "DM access becomes exact-user scoped and every mutation is reviewed and verified."; }, { readonly disposition: "review-required"; readonly id: "forums"; readonly instruction: "Inspect exact forum channels, posts, threads, and tags, then select the reviewed forum-post or tag workflow."; readonly outcome: "Forum channels, posts, threads, replies, and tags"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_forum_channel", "discord_create_forum_post", "discord_delete_forum_post", "discord_get_forum_channels", "discord_get_forum_post", "discord_get_forum_tags", "discord_list_forum_threads", "discord_reply_to_forum", "discord_set_forum_tags", "discord_update_forum_post"]; readonly targetTools: readonly ["list_channels", "get_thread_state", "list_active_threads", "list_archived_threads", "audit_forum_tags", "plan_forum_post", "execute_forum_post", "plan_forum_tag_change", "execute_forum_tag_change"]; readonly trustChange: "Forum writes become exact-channel reviewed operations with tag and thread state readback."; }, { readonly disposition: "review-required"; readonly id: "scheduled-events"; readonly instruction: "Use exact event reads and the reviewed create, edit, or delete lifecycle; create invite links separately."; readonly outcome: "Scheduled events, subscribers, and event invites"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_event_invite", "discord_create_scheduled_event", "discord_delete_scheduled_event", "discord_edit_scheduled_event", "discord_get_event_subscribers", "discord_get_scheduled_event", "discord_list_scheduled_events"]; readonly targetTools: readonly ["get_scheduled_event", "list_scheduled_events", "list_scheduled_event_users", "plan_scheduled_event_change", "execute_scheduled_event_change", "plan_invite_creation", "execute_invite_creation"]; readonly trustChange: "Event changes and invite capabilities become separate exact-scope reviewed outcomes."; }, { readonly disposition: "review-required"; readonly id: "invites-and-announcements"; readonly instruction: "Use redacted invite inspection and reviewed create or delete workflows; follow announcement channels through the reviewed subscription lifecycle."; readonly outcome: "Invites and announcement following"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_invite", "discord_delete_invite", "discord_follow_announcement_channel", "discord_get_invite", "discord_list_channel_invites", "discord_list_invites"]; readonly targetTools: readonly ["get_guild_invite", "list_guild_invites", "plan_invite_creation", "execute_invite_creation", "plan_invite_deletion", "execute_invite_deletion", "list_announcement_subscriptions", "plan_announcement_subscription", "execute_announcement_subscription"]; readonly trustChange: "Invite codes are redacted and announcement subscriptions gain exact source and destination review."; }, { readonly disposition: "review-required"; readonly id: "webhooks"; readonly instruction: "Audit exact webhook inventory before selecting creation, change, deletion, or message operations."; readonly outcome: "Webhook inspection, administration, and messages"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_create_webhook", "discord_delete_webhook", "discord_delete_webhook_message", "discord_edit_webhook", "discord_edit_webhook_message", "discord_fetch_webhook_message", "discord_list_webhooks", "discord_send_webhook_message"]; readonly targetTools: readonly ["audit_guild_webhooks", "get_channel_webhook", "get_webhook_message", "list_channel_webhooks", "plan_webhook_creation", "execute_webhook_creation", "plan_webhook_change", "execute_webhook_change", "plan_webhook_deletion", "execute_webhook_deletion", "send_webhook_message", "edit_webhook_message", "plan_webhook_message_deletion", "execute_webhook_message_deletion"]; readonly trustChange: "Reusable webhook credentials remain private and mutations gain exact scope, coordination, and readback."; }, { readonly disposition: "review-required"; readonly id: "membership-screening"; readonly instruction: "Inspect onboarding state and use the reviewed member-verification or onboarding workflow for the intended change."; readonly outcome: "Membership screening inspection and changes"; readonly recipes: readonly []; readonly sourceNames: readonly ["discord_get_membership_screening", "discord_update_membership_screening"]; readonly targetTools: readonly ["get_guild_onboarding", "plan_member_verification_change", "execute_member_verification_change", "plan_onboarding_change", "execute_onboarding_change"]; readonly trustChange: "Screening changes become exact-guild reviewed operations with complete state evidence."; }]; readonly id: "pasympa@2.1.1"; readonly limitations: readonly ["The source release's broad environment-configured write surface is translated into separate exact-scope target workflows, not imported as one authority switch."]; readonly product: "PaSympa"; readonly registryName: "io.github.PaSympa/discord-mcp"; readonly registryUrl: "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.PaSympa%2Fdiscord-mcp/versions/2.1.1"; readonly sourceTools: readonly string[]; readonly version: "2.1.1"; }, { readonly auditFidelity: "version-matched-public-source"; readonly auditedInventoryDigest: "sha256:62ea5e6008bd9160fbbeeab8985ca64ad2b33a3912015008b817b0ad83ce34c1"; readonly baselinePreset: "channel-reader"; readonly evidenceUrl: "https://github.com/Targeted-Design-Agency/mcp-discord-reader/tree/9e755ba875c04b952b82643dd4c52a7285adc3f1"; readonly groups: readonly [{ readonly disposition: "supported"; readonly id: "message-and-thread-reads"; readonly instruction: "Use channel-reader and exact channel or thread IDs for bounded reads and indexed search."; readonly outcome: "Recent messages, channel search, and thread reads"; readonly recipes: readonly []; readonly sourceNames: readonly ["fetch_messages", "get_thread", "search_channel"]; readonly targetTools: readonly ["read_messages", "search_messages", "get_thread_state"]; readonly trustChange: "Reads gain exact local scope, pinned identity, strict bounds, untrusted-text marking, and no connector persistence."; }, { readonly disposition: "review-required"; readonly id: "mention-check"; readonly instruction: "Replace partial username matching with an exact user ID and bounded message search inside allowed channel scope."; readonly outcome: "Mention inspection"; readonly recipes: readonly []; readonly sourceNames: readonly ["check_mentions"]; readonly targetTools: readonly ["search_messages", "read_messages"]; readonly trustChange: "Presentation-name matching is removed in favor of exact Discord identity and scoped evidence."; }, { readonly disposition: "review-required"; readonly id: "message-publishing"; readonly instruction: "Add message-channel for exact destination channels and express mentions through the explicit mention policy."; readonly outcome: "Message posting with optional mention"; readonly recipes: readonly ["message-channel"]; readonly sourceNames: readonly ["post_message"]; readonly targetTools: readonly ["send_message"]; readonly trustChange: "Free-form posting gains exact channel scope, explicit allowed mentions, anti-spam controls, nonce replay safety, and content-free receipts."; }]; readonly id: "targeted-reader@1.0.0"; readonly limitations: readonly ["The Registry version matches commit-pinned public source without a source tag or installable package declaration; the plan preserves that weaker audit fidelity."]; readonly product: "Targeted Reader"; readonly registryName: "io.github.targeteddesignagency-blip/discord-reader"; readonly registryUrl: "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.targeteddesignagency-blip%2Fdiscord-reader/versions/1.0.0"; readonly sourceTools: readonly string[]; readonly version: "1.0.0"; }]; //# sourceMappingURL=migration-manifests.d.ts.map