WebMCP Tool Definition Changes Not Reflecting in Chrome Beta 148.0.7778.56

95 views
Skip to first unread message

Radixweb Aditya Gorana

unread,
Apr 24, 2026, 9:09:16 AM (11 days ago) Apr 24
to Chrome Built-in AI Early Preview Program Discussions
Hi,

I am developing an MVC-based application using ASP.NET Framework 4.5 and am currently integrating WebMCP functionality.

I am facing an issue where changes made to WebMCP tool definitions are not consistently reflected in Chrome Beta (version 148.0.7778.56). Specifically, after modifying the execute function and redeploying, the tool continues to behave as it did before the changes, even though all other non-WebMCP code changes are reflected correctly.

Here are two specific examples that illustrate the issue:

1. Modified return message in execute function: I changed the return message (sent back to the AI) inside the execute function and redeployed. However, the tool continued returning the old message instead of the updated one.

2. Removed tool registration code: To solve this and debug it I removed the line of code that registers a particular tool and redeployed. Despite this, the tool was still visible and functional in the browser, as if the registration had never been removed.

Steps I have already taken to resolve the issue:
- Cleared the browser cache and storage
- Cleaned and rebuilt the solution
- Unregistered and re-registered the tools
- Deleted temporary files from the system
-Restarted the computer

Despite all of the above, the problem persists — the execute function continues to run its previous logic rather than the updated code. Moreover, after around an hour I could see the changes.

Could you please help me understand why WebMCP tool definition changes may not be picked up after redeployment, and what the recommended approach is to ensure updates are reliably reflected?

Thank you.

François Beaufort

unread,
Apr 24, 2026, 9:36:04 AM (11 days ago) Apr 24
to Radixweb Aditya Gorana, Chrome Built-in AI Early Preview Program Discussions
On Fri, Apr 24, 2026 at 3:09 PM Radixweb Aditya Gorana <radixd...@gmail.com> wrote:
Hi,

I am developing an MVC-based application using ASP.NET Framework 4.5 and am currently integrating WebMCP functionality.

I am facing an issue where changes made to WebMCP tool definitions are not consistently reflected in Chrome Beta (version 148.0.7778.56). Specifically, after modifying the execute function and redeploying, the tool continues to behave as it did before the changes, even though all other non-WebMCP code changes are reflected correctly.

Here are two specific examples that illustrate the issue:

1. Modified return message in execute function: I changed the return message (sent back to the AI) inside the execute function and redeployed. However, the tool continued returning the old message instead of the updated one.

Can you share a webpage URL where we can try this? 
 

2. Removed tool registration code: To solve this and debug it I removed the line of code that registers a particular tool and redeployed. Despite this, the tool was still visible and functional in the browser, as if the registration had never been removed.

Steps I have already taken to resolve the issue:
- Cleared the browser cache and storage
- Cleaned and rebuilt the solution
- Unregistered and re-registered the tools
- Deleted temporary files from the system
-Restarted the computer

Despite all of the above, the problem persists — the execute function continues to run its previous logic rather than the updated code. Moreover, after around an hour I could see the changes.

Could you please help me understand why WebMCP tool definition changes may not be picked up after redeployment, and what the recommended approach is to ensure updates are reliably reflected?

Thank you.

--
You received this message because you are subscribed to the Google Groups "Chrome Built-in AI Early Preview Program Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chrome-ai-dev-previe...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/chrome-ai-dev-preview-discuss/fe33394c-bb3a-41a8-978b-b179693991d9n%40chromium.org.

Radixweb Aditya Gorana

unread,
Apr 27, 2026, 4:30:04 AM (9 days ago) Apr 27
to Chrome Built-in AI Early Preview Program Discussions, François Beaufort, Chrome Built-in AI Early Preview Program Discussions, Radixweb Aditya Gorana
The URL of the Webpage I cannot share as it is an internal application of the company.

Dominic Farolino

unread,
Apr 27, 2026, 9:42:36 AM (8 days ago) Apr 27
to Radixweb Aditya Gorana, Chrome Built-in AI Early Preview Program Discussions, François Beaufort
How are you "modifying the return message in execute function"? Are you doing this without un-registering and re-registering the tool? Note that if you're trying to make changes to a function reference that you're using for `execute` outside of the registration, those changes won't be honored. This is how function references work on the web in general:

```
const bag = {
  f: () => console.log('OLD!!')
};

document.body.addEventListener('click', bag.f);
document.body.click();
bag.f = () => console.log('NEW!!');
document.body.click(); // Still prints 'OLD!!'
```

But without seeing the actual code, it's hard to know what's going on.

Radixweb Aditya Gorana

unread,
Apr 28, 2026, 1:43:34 AM (8 days ago) Apr 28
to Chrome Built-in AI Early Preview Program Discussions, Dominic Farolino, Chrome Built-in AI Early Preview Program Discussions, François Beaufort, Radixweb Aditya Gorana
Firstly, I am not doing as you have given the example. I have changed my code and then re-deployed it. I cannot share the entire code but here is a part of it:
function buildApplyMyLeaveTool() {
    return {
        name: "apply-my-leave",
        description: ".....",
        inputSchema: {},
        execute: async (inputParameters) => executeAddMyLeave(inputParameters)
        }

        function executeAddMyLeave(inputParameters){

        const returnMessage = "Tool successfully executed"
        return [{content: { type: "text", text: returnMessage}}]
}

The code is similar to this. The problem was the after editing the returnMessage to "Your leave was applied successfully" the tool was returning the previous message.

Note: I am changing the code and then build the project and the code changes of webMCP tool were not reflected. The issue persisted even after removing unregistering the tool (by commenting navigator.modelContext.registerTool(buildApplyMyLeaveToo())).
Note: I suspected that the problem might be in the Chrome canary version 148.0.7778.56, then downgraded to Chrome canary version 146x.xxxxx.xx. After that I have not faced such issue as of now.
Thanks

François Beaufort

unread,
Apr 28, 2026, 2:51:19 AM (8 days ago) Apr 28
to Radixweb Aditya Gorana, Chrome Built-in AI Early Preview Program Discussions, Dominic Farolino
Without seeing the code, it's hard to debug. FWIW, if you put this code into a simple HTML file, it works fine.
I'd suspect something in your framework is causing issues, but I'm not sure what without more details.

function buildApplyMyLeaveTool() {
  return {
    name: "apply-my-leave",
    description: ".....",
    inputSchema: {},
    execute: async (inputParameters) => executeAddMyLeave(inputParameters),
  };


  function executeAddMyLeave(inputParameters) {
    const returnMessage = "Tool successfully executed";
    return [{ content: { type: "text", text: returnMessage } }];
  }
}

const tool = buildApplyMyLeaveTool();
navigator.modelContext.registerTool(tool);

Radixweb Aditya Gorana

unread,
Apr 28, 2026, 3:44:56 AM (8 days ago) Apr 28
to Chrome Built-in AI Early Preview Program Discussions, François Beaufort, Chrome Built-in AI Early Preview Program Discussions, Dominic Farolino, Radixweb Aditya Gorana
It is not only happening with the function logic but also with the description. The old description is still reflected while I have update the description.
function buildGetMyLeavesTool() {
    return {
        name: "get-my-leaves",
        description: `Lists all the leaves taken by the user based on the filters applied.
        CRITICAL GUIDANCE FOR THE AI:
        - When the user asks for leave history in a specific year, month range, or "which months I took X leave", ALWAYS use a single broad date range instead of calling the tool multiple times per month.
        - Use this tool for any past leave history questions instead of balance tool.`,
        inputSchema: {
            type: "object",
            properties: {
                searchString: {
                    type: "string",
                    default: "",
                    description: "This filters the leaves by matching the this string on leave's reason, type (e.g., 'PL', 'Privilege Leave', 'family function'). Use this to filter specific leave types."
                },
                fromDate: {
                    type: ["string", "null"],
                    default: null,
                    description: "Filters those leaves which starts either on or after this date. YYYY-MM-DD format"
                },
                toDate: {
                    type: ["string", "null"],
                    default: null,
                    description: "Filters those leaves which starts either on or before this date. YYYY-MM-DD format"
                },
                sortBy: {
                    type: "string",
                    default: "AppliedOn",
                    description: `It is the basis field on which the list is sorted. Call leave-sort-by-options tool for values of SortBy options .`
                },
                sortOrder: {
                    type: "string",
                    default: "DESC",
                    description: "It defines the sort order of the list; use ASC and DESC for ascending descending sorting respectively."
                }
            }
        },
        execute: async (inputParameters = {}) => getMyLeavesAjax(inputParameters)
    }
}
The tool reflected the old description: 


It lists all the leaves taken by the user in constraint to the filters applied. CRITICAL GUIDANCE FOR THE AI: - When the user asks for leave history in a specific year, month range, or "which months I took X leave", ALWAYS use a single broad date range instead of calling the tool multiple times per month. - Use this tool for any past leave history questions instead of balance tool.

{ "type": "object", "properties": { "searchString": { "type": "string", "default": "", "description": "This filters the leaves by matching the this string on leave's reason, type (e.g., 'PL', 'Privilege Leave', 'family function'). Use this to filter specific leave types." }, "fromDate": { "type": [ "string", "null" ], "default": null, "description": "Filters those leaves which starts either on or after this date. YYYY-MM-DD format" }, "toDate": { "type": [ "string", "null" ], "default": null, "description": "Filters those leaves which starts either on or before this date. YYYY-MM-DD format" }, "sortBy": { "type": "string", "default": "AppliedOn", "description": "It is the basis field on which the list is sorted. Call leave-sort-by-options tool for values of SortBy options ." }, "sortOrder": { "type": "string", "default": "DESC", "description": "It defines the sort order of the list; use ASC and DESC for ascending descending sorting respectively." } } }

get-my-leaves


The bold line in the description is the change.
Note: My Chrome is updated to the latest version.
Hope it will give the better clarity.

François Beaufort

unread,
Apr 28, 2026, 3:46:05 AM (8 days ago) Apr 28
to Radixweb Aditya Gorana, Chrome Built-in AI Early Preview Program Discussions, Dominic Farolino
Can you reproduce with a simple HTML page?

Radixweb Aditya Gorana

unread,
6:47 AM (10 hours ago) 6:47 AM
to Chrome Built-in AI Early Preview Program Discussions, François Beaufort, Chrome Built-in AI Early Preview Program Discussions, Dominic Farolino, Radixweb Aditya Gorana
The changes in the code of the tools are simply not reflected, so even if I provide a sample of a HTML page the issue will not be reproduced.
Reply all
Reply to author
Forward
0 new messages