001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.bean.mcp.v20260728;
018
019/**
020 * JSON-RPC method names used by MCP over HTTP.
021 */
022@SuppressWarnings({
023   "java:S115" // Constant names mirror MCP protocol field names exactly (e.g., TOOLS_LIST = "tools/list").
024})
025public final class McpMethods {
026
027   private McpMethods() {}
028
029   /** Discover server identity and capabilities. */
030   public static final String SERVER_DISCOVER = "server/discover";
031
032   /** Liveness / keepalive. */
033   public static final String PING = "ping";
034
035   /** List tools. */
036   public static final String TOOLS_LIST = "tools/list";
037
038   /** Execute a tool. */
039   public static final String TOOLS_CALL = "tools/call";
040
041   /** List prompts. */
042   public static final String PROMPTS_LIST = "prompts/list";
043
044   /** Fetch a prompt. */
045   public static final String PROMPTS_GET = "prompts/get";
046
047   /** List resources. */
048   public static final String RESOURCES_LIST = "resources/list";
049
050   /** Read a resource. */
051   public static final String RESOURCES_READ = "resources/read";
052
053   /** List resource templates. */
054   public static final String RESOURCES_TEMPLATES_LIST = "resources/templates/list";
055
056   /** Complete a prompt argument or resource-template variable. */
057   public static final String COMPLETION_COMPLETE = "completion/complete";
058
059   /**
060    * Server-to-client duplex sampling request (MCP sampling). Never dispatched through
061    * {@code McpRevision} — flows over the {@code McpDuplexDispatcher}/{@code McpServerRequestHandler} seam.
062    */
063   public static final String SAMPLING_CREATE_MESSAGE = "sampling/createMessage";
064
065   /**
066    * Start a held-open notification stream (SEP-2575). Replaces {@code resources/subscribe}/
067    * {@code resources/unsubscribe} and the old HTTP GET SSE endpoint.
068    */
069   public static final String SUBSCRIPTIONS_LISTEN = "subscriptions/listen";
070
071   /** Notification: a subscribed resource's content changed. Only deliverable inside a {@link #SUBSCRIPTIONS_LISTEN} stream. */
072   public static final String NOTIFICATIONS_RESOURCES_UPDATED = "notifications/resources/updated";
073
074   /** Notification: the resource list changed. Only deliverable inside a {@link #SUBSCRIPTIONS_LISTEN} stream. */
075   public static final String NOTIFICATIONS_RESOURCES_LIST_CHANGED = "notifications/resources/list_changed";
076
077   /** Notification: the tool list changed. Only deliverable inside a {@link #SUBSCRIPTIONS_LISTEN} stream. */
078   public static final String NOTIFICATIONS_TOOLS_LIST_CHANGED = "notifications/tools/list_changed";
079
080   /** Notification: the prompt list changed. Only deliverable inside a {@link #SUBSCRIPTIONS_LISTEN} stream. */
081   public static final String NOTIFICATIONS_PROMPTS_LIST_CHANGED = "notifications/prompts/list_changed";
082
083   /** Mandatory first frame on every {@link #SUBSCRIPTIONS_LISTEN} stream, echoing the honored filter. */
084   public static final String NOTIFICATIONS_SUBSCRIPTIONS_ACKNOWLEDGED = "notifications/subscriptions/acknowledged";
085}