your computer · the harness
the model
you connect the calendar plugin. Your side stores the login, and tells the model only that a tool named list_events exists.
← all the model produces is a line of text: list_events(day: "tomorrow")
your side does everything real: signs in, calls the calendar service, handles the error and retries, trims 200 events down to tomorrow's six, formats them as text →
← reads those six lines like any other message, and writes your summary
The model never held your password, never opened a connection, never saw the other 194 events. It asked, in text, and read text back.
So a “plugin” is just registered local capability. When one misbehaves it's almost always the plumbing — the login, the search, the formatting — not the model.