1
00:00:00,040 --> 00:00:03,879
Welcome to the M365 FM podcast,
where we explore the people,

2
00:00:03,879 --> 00:00:06,719
ideas and technologies shaping
the future of work.

3
00:00:06,719 --> 00:00:09,560
Why Copilot Studio plugins sound
harder than they are.

4
00:00:09,560 --> 00:00:11,519
The hardest part of Copilot
Studio plugins is the

5
00:00:11,519 --> 00:00:12,800
vocabulary, not the code.

6
00:00:12,800 --> 00:00:16,800
Welcome to the M365 FM podcast
where we explore the people,

7
00:00:16,800 --> 00:00:19,399
ideas and technologies shaping
the future of work.

8
00:00:19,399 --> 00:00:20,780
By the end, you will be able to

9
00:00:20,780 --> 00:00:22,320
explain them to someone else in

10
00:00:22,320 --> 00:00:23,320
one sentence.

11
00:00:23,320 --> 00:00:24,600
A plugin is a package that gives

12
00:00:24,600 --> 00:00:26,239
copilot one new ability, like

13
00:00:26,239 --> 00:00:27,559
checking a budget or booking a

14
00:00:27,559 --> 00:00:28,120
room.

15
00:00:28,120 --> 00:00:29,160
The surprising part is how

16
00:00:29,160 --> 00:00:30,399
copilot decides to use it,

17
00:00:30,399 --> 00:00:31,399
because the whole thing comes

18
00:00:31,399 --> 00:00:32,759
down to matching your words to a

19
00:00:32,759 --> 00:00:33,920
short description.

20
00:00:33,920 --> 00:00:35,079
That one rule explains why

21
00:00:35,079 --> 00:00:36,679
plugins work, why they sometimes

22
00:00:36,679 --> 00:00:38,200
fail, and what it takes to build

23
00:00:38,200 --> 00:00:38,799
one.

24
00:00:38,799 --> 00:00:40,439
What a plugin actually is.

25
00:00:40,439 --> 00:00:42,640
Start with the plain version,
because the technical version

26
00:00:42,640 --> 00:00:44,039
hides the simple part.

27
00:00:44,039 --> 00:00:46,359
A Microsoft three hundred sixty
five copilot plugin is an

28
00:00:46,359 --> 00:00:49,179
installable package that brings
together the abilities copilot

29
00:00:49,179 --> 00:00:50,679
needs for one specific job.

30
00:00:50,679 --> 00:00:52,039
It is not a new product you buy

31
00:00:52,039 --> 00:00:53,719
from a store, and it is not a

32
00:00:53,719 --> 00:00:54,320
single switch.

33
00:00:54,320 --> 00:00:55,920
You flip inside that bundle.

34
00:00:55,920 --> 00:00:58,159
You can put a few different
things and you do not have to

35
00:00:58,159 --> 00:00:59,039
use all of them.

36
00:00:59,039 --> 00:01:02,000
You can include a small, focused
assistant that carries its own

37
00:01:02,000 --> 00:01:03,429
instructions and knowledge.

38
00:01:03,429 --> 00:01:06,670
You can include a reusable skill
which is a saved set of steps

39
00:01:06,670 --> 00:01:08,150
for a job you repeat, often.

40
00:01:08,150 --> 00:01:10,230
Adding a connector lets copilot
reach content.

41
00:01:10,230 --> 00:01:12,310
Living outside Microsoft three
hundred sixty five.

42
00:01:12,310 --> 00:01:14,469
You can also point the bundle at
a tool server.

43
00:01:14,469 --> 00:01:15,969
Microsoft calls this an MCP

44
00:01:15,969 --> 00:01:17,549
server, and it is really just a

45
00:01:17,549 --> 00:01:18,870
service that offers a menu of

46
00:01:18,870 --> 00:01:19,310
jobs.

47
00:01:19,310 --> 00:01:21,950
Copilot can ask it to run a
plugin, can use one of these

48
00:01:21,950 --> 00:01:24,989
pieces or several, and you can
build new pieces or reuse ones

49
00:01:24,989 --> 00:01:26,230
that already exist.

50
00:01:26,230 --> 00:01:28,829
One distinction trips up almost
everyone, and it is worth

51
00:01:28,829 --> 00:01:29,790
holding on to.

52
00:01:29,790 --> 00:01:32,109
The package is the box, and the
action is the thing that

53
00:01:32,109 --> 00:01:33,310
actually does the work.

54
00:01:33,310 --> 00:01:34,590
A box on its own changes

55
00:01:34,590 --> 00:01:35,989
nothing, because copilot only

56
00:01:35,989 --> 00:01:37,230
gets value when it picks one

57
00:01:37,230 --> 00:01:38,549
action out of the box and runs

58
00:01:38,549 --> 00:01:38,750
it.

59
00:01:38,750 --> 00:01:41,549
That is why two very different
jobs can share the same package

60
00:01:41,549 --> 00:01:43,109
and still behave nothing alike.

61
00:01:43,109 --> 00:01:44,909
A travel budget makes this
concrete.

62
00:01:44,909 --> 00:01:47,549
A plugin for that budget can
answer one kind of question,

63
00:01:47,549 --> 00:01:49,150
which is how much money is left.

64
00:01:49,150 --> 00:01:50,269
The same plugin can also do

65
00:01:50,269 --> 00:01:51,430
something quite different, which

66
00:01:51,430 --> 00:01:52,950
is charge a new expense to that

67
00:01:52,950 --> 00:01:53,510
budget.

68
00:01:53,510 --> 00:01:55,790
There is one more part of the
plane version that matters.

69
00:01:55,790 --> 00:01:58,709
The package does not contain the
outside service it talks to.

70
00:01:58,709 --> 00:02:00,469
It holds the connection details,

71
00:02:00,469 --> 00:02:01,790
the address and the permission

72
00:02:01,790 --> 00:02:03,090
settings while the service

73
00:02:03,090 --> 00:02:04,625
itself keeps running somewhere

74
00:02:04,625 --> 00:02:05,260
else.

75
00:02:05,260 --> 00:02:06,700
That separation helps because a

76
00:02:06,700 --> 00:02:07,780
team can update the outside

77
00:02:07,780 --> 00:02:09,180
service without repackaging the

78
00:02:09,180 --> 00:02:09,900
plugin.

79
00:02:09,900 --> 00:02:11,300
The package also carries a short

80
00:02:11,300 --> 00:02:12,900
description of itself, and that

81
00:02:12,900 --> 00:02:14,300
description does more work than

82
00:02:14,300 --> 00:02:15,099
it looks.

83
00:02:15,099 --> 00:02:17,740
Copilot reads it to decide
whether the plugin is even

84
00:02:17,740 --> 00:02:19,580
relevant to your question.

85
00:02:19,580 --> 00:02:22,099
A clear description of a budget
plugin says it can look up a

86
00:02:22,099 --> 00:02:23,780
budget and charge an expense.

87
00:02:23,780 --> 00:02:26,620
That is enough for copilot to
know when to reach for it.

88
00:02:26,620 --> 00:02:28,300
Microsoft uses the word plugin

89
00:02:28,300 --> 00:02:29,900
in two ways, and the overlap

90
00:02:29,900 --> 00:02:30,819
confuses people.

91
00:02:30,819 --> 00:02:32,300
The package is one meaning, and

92
00:02:32,300 --> 00:02:33,419
the technical action that a

93
00:02:33,419 --> 00:02:35,139
focused assistant uses is the

94
00:02:35,139 --> 00:02:35,659
other.

95
00:02:35,659 --> 00:02:37,060
Keep the box and the action

96
00:02:37,060 --> 00:02:38,539
separate in your head and most

97
00:02:38,539 --> 00:02:40,139
of the jargon stops fighting

98
00:02:40,139 --> 00:02:40,860
you.

99
00:02:40,860 --> 00:02:43,419
How copilot chooses between all
those actions is the part that

100
00:02:43,419 --> 00:02:44,699
makes the whole thing click.

101
00:02:44,699 --> 00:02:46,740
And that is exactly where we go
next.

102
00:02:46,740 --> 00:02:48,740
How copilot decides to use a
plugin.

103
00:02:48,740 --> 00:02:51,780
Now for the rule that runs
underneath all of this, copilot

104
00:02:51,780 --> 00:02:54,659
reads a short description of
each plugin, and when your words

105
00:02:54,659 --> 00:02:57,580
line up with that description,
it reaches for the plugin.

106
00:02:57,580 --> 00:03:00,099
If nothing lines up, copilot
answers on its own and the

107
00:03:00,099 --> 00:03:02,340
plugin never wakes up, that is
the whole trigger.

108
00:03:02,340 --> 00:03:03,099
The flow looks like this.

109
00:03:03,099 --> 00:03:06,620
In practice, you type a question
and copilot scans the plugins it

110
00:03:06,620 --> 00:03:07,500
is allowed to use.

111
00:03:07,500 --> 00:03:10,419
It maps the important parts of
your question onto the inputs

112
00:03:10,419 --> 00:03:11,900
that one action expects.

113
00:03:11,900 --> 00:03:14,780
Then it asks you to allow it to
send your words to that plugin.

114
00:03:14,780 --> 00:03:16,580
Once you agree, the plugin
fetches a token.

115
00:03:16,580 --> 00:03:17,699
If the outside service needs

116
00:03:17,699 --> 00:03:19,159
one, it calls the service and it

117
00:03:19,159 --> 00:03:20,159
hands the result back to

118
00:03:20,159 --> 00:03:20,659
copilot.

119
00:03:20,659 --> 00:03:23,259
Copilot turns that result into
an answer you can read.

120
00:03:23,259 --> 00:03:25,500
And the whole round trip can
happen in a couple of seconds.

121
00:03:25,500 --> 00:03:28,379
Two small examples show how
literal this matching is.

122
00:03:28,379 --> 00:03:29,500
Ask how much is left in the

123
00:03:29,500 --> 00:03:31,259
travel budget, and copilot finds

124
00:03:31,259 --> 00:03:32,979
the lookup action and returns a

125
00:03:32,979 --> 00:03:33,539
number.

126
00:03:33,539 --> 00:03:34,780
Ask it to charge five hundred

127
00:03:34,780 --> 00:03:35,819
dollars for Megan's plane

128
00:03:35,819 --> 00:03:37,139
ticket, and it finds the action

129
00:03:37,139 --> 00:03:38,699
that changes data and sends the

130
00:03:38,699 --> 00:03:39,620
charge through.

131
00:03:39,620 --> 00:03:42,180
The words you choose are doing
real work here, because a vague

132
00:03:42,180 --> 00:03:44,419
question gives copilot nothing
to match against.

133
00:03:44,419 --> 00:03:47,300
That is why a well-written
description is not paper work.

134
00:03:47,300 --> 00:03:49,819
It is the thing that makes the
plugin reachable.

135
00:03:49,819 --> 00:03:51,500
Permission is where the design
earns trust.

136
00:03:51,500 --> 00:03:54,379
The first time copilot wants to
send your data to a plugin, it

137
00:03:54,379 --> 00:03:55,740
asks you to confirm.

138
00:03:55,740 --> 00:03:58,379
After that, actions that only
read data stop asking.

139
00:03:58,379 --> 00:04:01,099
While actions that change data
keep asking every time.

140
00:04:01,099 --> 00:04:02,979
Developers can change those
defaults.

141
00:04:02,979 --> 00:04:05,819
But the safe behavior is the one
you get by default.

142
00:04:05,819 --> 00:04:08,060
So the plugin is not reading
your budget in the background,

143
00:04:08,060 --> 00:04:10,689
and that matters when the data
belongs to your company.

144
00:04:10,689 --> 00:04:12,689
There is a second layer worth
knowing about.

145
00:04:12,689 --> 00:04:14,729
A tool server can update its own
menu of jobs.

146
00:04:14,729 --> 00:04:17,649
Copilot can pick up the new jobs
at runtime without anyone

147
00:04:17,649 --> 00:04:18,810
repackaging the agent.

148
00:04:18,810 --> 00:04:19,970
That is handy for a service that

149
00:04:19,970 --> 00:04:21,329
changes often because the plugin

150
00:04:21,329 --> 00:04:22,569
stays useful as the service

151
00:04:22,569 --> 00:04:23,209
grows.

152
00:04:23,209 --> 00:04:25,930
When a result needs to look
richer than plain text, the

153
00:04:25,930 --> 00:04:28,370
plugin can send back a small
card or widget.

154
00:04:28,370 --> 00:04:31,610
Copilot renders it as a table, a
form, or a link.

155
00:04:31,610 --> 00:04:34,129
You have seen these as the tidy
panels that appear inside a

156
00:04:34,129 --> 00:04:36,649
chat, and they belong to the
plugin rather than the AI.

157
00:04:36,649 --> 00:04:39,670
Guessing at formatting
connectors, agents and where

158
00:04:39,670 --> 00:04:40,970
Copilot Studio fits.

159
00:04:40,970 --> 00:04:43,649
Three words get mixed up
constantly, and untangling them

160
00:04:43,649 --> 00:04:45,089
makes the rest of this easier.

161
00:04:45,089 --> 00:04:47,009
A connector brings knowledge in
an action.

162
00:04:47,009 --> 00:04:49,290
Lets the agent do something out
in the world.

163
00:04:49,290 --> 00:04:52,490
A plugin is the package that can
carry either one or both.

164
00:04:52,490 --> 00:04:55,970
Begin with the connector because
it is the one people meet first.

165
00:04:55,970 --> 00:04:57,209
A connector is a wrapper around

166
00:04:57,209 --> 00:04:58,629
an outside service, and it lets

167
00:04:58,629 --> 00:05:00,110
copilot pull in content or reach

168
00:05:00,110 --> 00:05:01,069
a system it could not see

169
00:05:01,069 --> 00:05:01,610
before.

170
00:05:01,610 --> 00:05:02,889
Some connectors are pre-built,

171
00:05:02,889 --> 00:05:04,250
so you pick the service and sign

172
00:05:04,250 --> 00:05:04,810
in.

173
00:05:04,810 --> 00:05:07,250
Others are custom, which means
you build the wrapper yourself

174
00:05:07,250 --> 00:05:09,050
when no ready made one exists.

175
00:05:09,050 --> 00:05:11,399
Connectors also come in two
levels of access.

176
00:05:11,399 --> 00:05:14,680
Standard connectors are included
with every copilot studio plan,

177
00:05:14,680 --> 00:05:17,360
while premium connectors need a
plan that covers them.

178
00:05:17,360 --> 00:05:18,319
That pricing line is worth

179
00:05:18,319 --> 00:05:19,480
remembering because a premium

180
00:05:19,480 --> 00:05:20,759
connector can decide which plan

181
00:05:20,759 --> 00:05:22,199
you need, an agent is the next

182
00:05:22,199 --> 00:05:22,639
piece.

183
00:05:22,639 --> 00:05:25,120
A declarative agent is
Microsoft's name for this kind

184
00:05:25,120 --> 00:05:26,319
of focused assistant.

185
00:05:26,319 --> 00:05:27,879
You define it with a purpose its

186
00:05:27,879 --> 00:05:29,160
instructions, its knowledge, and

187
00:05:29,160 --> 00:05:30,319
the actions it is allowed to

188
00:05:30,319 --> 00:05:30,720
take.

189
00:05:30,720 --> 00:05:32,079
The agent is the character and

190
00:05:32,079 --> 00:05:33,420
the plugin is the backpack it

191
00:05:33,420 --> 00:05:34,160
carries.

192
00:05:34,160 --> 00:05:35,480
There is a second kind of agent

193
00:05:35,480 --> 00:05:36,759
for teams that want total

194
00:05:36,759 --> 00:05:37,279
control.

195
00:05:37,279 --> 00:05:38,639
A custom engine agent lets a

196
00:05:38,639 --> 00:05:40,259
developer own the orchestration,

197
00:05:40,259 --> 00:05:41,600
the model, the hosting, and the

198
00:05:41,600 --> 00:05:42,120
interface.

199
00:05:42,120 --> 00:05:43,480
That is more power and more
work.

200
00:05:43,480 --> 00:05:46,160
Most beginners never need that
level, and the declarative route

201
00:05:46,160 --> 00:05:47,639
covers a surprising amount.

202
00:05:47,639 --> 00:05:49,079
That is where Microsoft three.

203
00:05:49,079 --> 00:05:51,439
Sixty five Copilot Studio sits
right in the middle.

204
00:05:51,439 --> 00:05:52,959
It is the Maker Room, a low code

205
00:05:52,959 --> 00:05:54,120
place where you build the agent

206
00:05:54,120 --> 00:05:55,360
and snap abilities onto it

207
00:05:55,360 --> 00:05:56,560
without starting from a blank

208
00:05:56,560 --> 00:05:57,000
code file.

209
00:05:57,000 --> 00:05:59,399
You still get real control over
the agent's instructions, its

210
00:05:59,399 --> 00:06:01,519
knowledge, its variables, and
the actions it can run.

211
00:06:01,519 --> 00:06:04,120
You just work through a visual
canvas instead of a compiler.

212
00:06:04,120 --> 00:06:06,240
It helps to see where each
product lives.

213
00:06:06,240 --> 00:06:07,399
The plugin idea runs inside

214
00:06:07,399 --> 00:06:08,439
Microsoft three hundred sixty

215
00:06:08,439 --> 00:06:08,560
five.

216
00:06:08,560 --> 00:06:09,720
Copilot, which is the copilot

217
00:06:09,720 --> 00:06:10,759
your colleagues already use

218
00:06:10,759 --> 00:06:11,519
every day.

219
00:06:11,519 --> 00:06:14,189
The building happens in Copilot
Studio, which sits on top of

220
00:06:14,189 --> 00:06:16,910
Power Platform, the same family
that holds Power apps Power

221
00:06:16,910 --> 00:06:18,550
Automate and Power BI.

222
00:06:18,550 --> 00:06:19,750
Azure shows up mostly on the

223
00:06:19,750 --> 00:06:21,550
edges, hosting outside services

224
00:06:21,550 --> 00:06:22,670
and running the billing meter

225
00:06:22,670 --> 00:06:23,509
for usage.

226
00:06:23,509 --> 00:06:24,550
If you want the simplest

227
00:06:24,550 --> 00:06:25,990
possible start, there is even a

228
00:06:25,990 --> 00:06:26,990
lightweight builder inside

229
00:06:26,990 --> 00:06:29,110
copilot itself for small teams,

230
00:06:29,110 --> 00:06:30,389
so you are not learning three

231
00:06:30,389 --> 00:06:31,470
unrelated worlds.

232
00:06:31,470 --> 00:06:32,629
You are learning one idea that

233
00:06:32,629 --> 00:06:34,170
happens to touch all three and

234
00:06:34,170 --> 00:06:35,350
building one without writing

235
00:06:35,350 --> 00:06:36,149
much code.

236
00:06:36,149 --> 00:06:38,589
If you have never built anything
technical, this is the part that

237
00:06:38,589 --> 00:06:39,790
should reassure you.

238
00:06:39,790 --> 00:06:41,470
The low code path is real, and

239
00:06:41,470 --> 00:06:42,550
it starts from something that

240
00:06:42,550 --> 00:06:43,709
already works rather than a

241
00:06:43,709 --> 00:06:44,670
blank page.

242
00:06:44,670 --> 00:06:46,110
You pick a pre-built connector,

243
00:06:46,110 --> 00:06:47,350
or you build a custom connector

244
00:06:47,350 --> 00:06:48,589
from an existing description of

245
00:06:48,589 --> 00:06:49,189
an API.

246
00:06:49,189 --> 00:06:50,470
An API is just the way one

247
00:06:50,470 --> 00:06:51,910
program asks another program to

248
00:06:51,910 --> 00:06:52,670
do something.

249
00:06:52,670 --> 00:06:53,910
You can also attach a direct

250
00:06:53,910 --> 00:06:55,709
action to an API or a tool

251
00:06:55,709 --> 00:06:56,230
server.

252
00:06:56,230 --> 00:06:59,110
Most beginners start with the
pre-built route because it skips

253
00:06:59,110 --> 00:07:00,269
the hardest questions.

254
00:07:00,269 --> 00:07:01,470
When you do need a custom

255
00:07:01,470 --> 00:07:02,910
connector, you rarely write it

256
00:07:02,910 --> 00:07:03,750
from nothing.

257
00:07:03,750 --> 00:07:06,230
You can hand the tool an
existing description and let it

258
00:07:06,230 --> 00:07:07,470
build the wrapper for you.

259
00:07:07,470 --> 00:07:08,389
You might think that building

260
00:07:08,389 --> 00:07:09,629
one means writing code, but it

261
00:07:09,629 --> 00:07:10,990
is actually closer to filling in

262
00:07:10,990 --> 00:07:11,310
a form.

263
00:07:11,310 --> 00:07:14,430
You open your agent, go to the
tools page and add a tool.

264
00:07:14,430 --> 00:07:15,819
You choose the service, create a

265
00:07:15,819 --> 00:07:17,459
connection and sign in with an

266
00:07:17,459 --> 00:07:18,459
account that has the right

267
00:07:18,459 --> 00:07:18,899
access.

268
00:07:18,899 --> 00:07:21,019
Then you decide which
credentials the tool should use.

269
00:07:21,019 --> 00:07:23,060
And this is a decision people
get wrong all the time.

270
00:07:23,060 --> 00:07:24,459
By default, the tool uses the

271
00:07:24,459 --> 00:07:25,500
credentials of the person

272
00:07:25,500 --> 00:07:26,139
asking.

273
00:07:26,139 --> 00:07:27,319
You can switch it to use the

274
00:07:27,319 --> 00:07:28,779
maker's credentials instead so

275
00:07:28,779 --> 00:07:29,779
every user shares one

276
00:07:29,779 --> 00:07:30,420
connection.

277
00:07:30,420 --> 00:07:33,459
That switch changes both who can
reach the data and who gets

278
00:07:33,459 --> 00:07:34,459
billed for it.

279
00:07:34,459 --> 00:07:35,660
You test the whole thing in the

280
00:07:35,660 --> 00:07:37,259
chat panel, fix what looks off,

281
00:07:37,259 --> 00:07:37,899
and publish.

282
00:07:37,899 --> 00:07:40,420
The test panel is forgiving,
which is exactly why it is the

283
00:07:40,420 --> 00:07:41,300
right place to learn.

284
00:07:41,300 --> 00:07:42,899
You can ask clumsy questions
there.

285
00:07:42,899 --> 00:07:44,220
Watch which action fires and

286
00:07:44,220 --> 00:07:45,500
adjust the description until the

287
00:07:45,500 --> 00:07:46,379
matching works.

288
00:07:46,379 --> 00:07:48,500
There is one honest catch about
testing.

289
00:07:48,500 --> 00:07:49,699
A trial license lets you build

290
00:07:49,699 --> 00:07:51,300
an agent and try it in the test

291
00:07:51,300 --> 00:07:52,699
panel, but it does not let you

292
00:07:52,699 --> 00:07:53,100
publish.

293
00:07:53,100 --> 00:07:54,220
You cannot hand it to real

294
00:07:54,220 --> 00:07:55,660
people yet you can still learn a

295
00:07:55,660 --> 00:07:57,060
lot inside that panel, which is

296
00:07:57,060 --> 00:07:58,220
why it is worth starting there

297
00:07:58,220 --> 00:07:59,579
before anyone brings up budgets

298
00:07:59,579 --> 00:08:00,579
and licenses.

299
00:08:00,579 --> 00:08:03,899
When you are ready to share, the
work follows a familiar path.

300
00:08:03,899 --> 00:08:06,860
You plan the task, build or
reuse the pieces, package and

301
00:08:06,860 --> 00:08:09,060
test the plugin, and then
publish or share it.

302
00:08:09,060 --> 00:08:11,180
After that, you make it
available under whatever rules

303
00:08:11,180 --> 00:08:14,699
your organization sets and you
monitor and update it over time.

304
00:08:14,699 --> 00:08:15,980
That last step is the one

305
00:08:15,980 --> 00:08:17,620
everyone forgets and it is the

306
00:08:17,620 --> 00:08:18,939
one that keeps a plugin from

307
00:08:18,939 --> 00:08:19,819
going stale.

308
00:08:19,819 --> 00:08:22,100
Everything you have heard so far
sounds tidy.

309
00:08:22,100 --> 00:08:24,699
The real world is messier than
that, and the next section is

310
00:08:24,699 --> 00:08:26,819
where the mess lives.

311
00:08:26,819 --> 00:08:28,660
What it looks like in real work.

312
00:08:28,660 --> 00:08:32,059
Abstract pieces become obvious
once you see them in a real job.

313
00:08:32,059 --> 00:08:33,779
Take an employee support
assistant.

314
00:08:33,779 --> 00:08:34,980
It answers common policy

315
00:08:34,980 --> 00:08:36,379
questions from approved company

316
00:08:36,379 --> 00:08:37,500
content so it works from

317
00:08:37,500 --> 00:08:37,899
knowledge.

318
00:08:37,899 --> 00:08:39,179
A connector brought in.

319
00:08:39,179 --> 00:08:41,779
It does not invent answers from
the open internet.

320
00:08:41,779 --> 00:08:43,139
And that is the everyday win.

321
00:08:43,139 --> 00:08:44,500
A new hire can get a straight

322
00:08:44,500 --> 00:08:46,019
answer without emailing three

323
00:08:46,019 --> 00:08:46,940
people.

324
00:08:46,940 --> 00:08:48,460
Then picture a support desk.

325
00:08:48,460 --> 00:08:50,139
A customer asks about an order,

326
00:08:50,139 --> 00:08:51,259
and the assistant pulls the

327
00:08:51,259 --> 00:08:52,659
current status from an outside

328
00:08:52,659 --> 00:08:53,779
system in the middle of the

329
00:08:53,779 --> 00:08:54,659
conversation.

330
00:08:54,659 --> 00:08:57,419
The knowledge did not sit inside
copilot and it was never copied

331
00:08:57,419 --> 00:08:58,460
in the action.

332
00:08:58,460 --> 00:09:00,980
Asked the outside service for
the latest answer and brought it

333
00:09:00,980 --> 00:09:03,620
back, which is exactly what a
read action is for.

334
00:09:03,620 --> 00:09:06,539
The finance example is where a
right action earns its place.

335
00:09:06,539 --> 00:09:09,100
Someone asks how much is left in
a project budget and the

336
00:09:09,100 --> 00:09:10,620
assistant reads the number.

337
00:09:10,620 --> 00:09:13,220
Then they ask to charge a new
expense to that budget, and the

338
00:09:13,220 --> 00:09:15,580
same assistant writes the change
back through the service.

339
00:09:15,580 --> 00:09:16,820
That is the difference between a

340
00:09:16,820 --> 00:09:18,340
tool that can tell you things

341
00:09:18,340 --> 00:09:19,529
and a tool that can change

342
00:09:19,529 --> 00:09:20,169
things.

343
00:09:20,169 --> 00:09:22,809
It is why copilot asks
permission before it sends

344
00:09:22,809 --> 00:09:24,450
anything that modifies a record.

345
00:09:24,450 --> 00:09:26,250
Common mistakes and honest
limits.

346
00:09:26,250 --> 00:09:29,250
This is the part a lot of
explainers skip and skipping it

347
00:09:29,250 --> 00:09:30,490
is how people get burned.

348
00:09:30,490 --> 00:09:32,769
The limits here come from
Microsoft's own documentation,

349
00:09:32,769 --> 00:09:34,250
so none of this is guesswork.

350
00:09:34,250 --> 00:09:36,809
Most plugin failures are not the
AI being weak.

351
00:09:36,809 --> 00:09:39,090
They are configuration licensing
and permission problems.

352
00:09:39,090 --> 00:09:40,049
Wearing a costume.

353
00:09:40,049 --> 00:09:42,809
The first mistake is stuffing
too many plugins into one agent

354
00:09:42,809 --> 00:09:44,129
with up to five plugins.

355
00:09:44,129 --> 00:09:47,129
Copilot always loads them into
the conversation past five.

356
00:09:47,129 --> 00:09:48,490
It stops loading them all and

357
00:09:48,490 --> 00:09:49,769
starts matching on the plugin

358
00:09:49,769 --> 00:09:50,809
descriptions instead.

359
00:09:50,809 --> 00:09:51,889
That means a poorly written

360
00:09:51,889 --> 00:09:53,429
description can drop your plugin

361
00:09:53,429 --> 00:09:54,690
out of the running without any

362
00:09:54,690 --> 00:09:55,649
error message.

363
00:09:55,649 --> 00:09:58,450
Keep the plugin count small and
the description sharp, and this

364
00:09:58,450 --> 00:09:59,970
problem mostly disappears.

365
00:09:59,970 --> 00:10:02,889
The second mistake is giving one
plugin too many tools.

366
00:10:02,889 --> 00:10:04,450
Microsoft warns that response

367
00:10:04,450 --> 00:10:06,210
quality can drop once a plugin

368
00:10:06,210 --> 00:10:07,409
carries more than about ten

369
00:10:07,409 --> 00:10:08,889
functions or tools, everything

370
00:10:08,889 --> 00:10:09,970
has to fit inside a limited

371
00:10:09,970 --> 00:10:10,370
window.

372
00:10:10,370 --> 00:10:11,769
A plugin with forty tools sounds

373
00:10:11,769 --> 00:10:12,850
impressive and behaves worse

374
00:10:12,850 --> 00:10:14,649
than a plugin with five fewer

375
00:10:14,649 --> 00:10:15,289
clearer tools.

376
00:10:15,289 --> 00:10:15,690
Win.

377
00:10:15,690 --> 00:10:18,409
The third mistake is picking the
wrong way to sign in.

378
00:10:18,409 --> 00:10:19,690
Some options only work for one

379
00:10:19,690 --> 00:10:21,100
kind of plugin, and An API key

380
00:10:21,100 --> 00:10:22,440
works for API plugins, but not

381
00:10:22,440 --> 00:10:24,039
for tool server plugins, and a

382
00:10:24,039 --> 00:10:25,360
newer automatic registration

383
00:10:25,360 --> 00:10:26,639
option works for tool server

384
00:10:26,639 --> 00:10:27,899
plugins, but not for API

385
00:10:27,899 --> 00:10:28,600
plugins.

386
00:10:28,600 --> 00:10:30,919
Pick a scheme the plugin type
does not support and the

387
00:10:30,919 --> 00:10:33,519
connection fails for reasons
that look mysterious until you

388
00:10:33,519 --> 00:10:34,360
know the rule.

389
00:10:34,360 --> 00:10:37,320
The fourth mistake is leaning on
power automate flows as actions

390
00:10:37,320 --> 00:10:38,200
inside an agent.

391
00:10:38,200 --> 00:10:39,759
Microsoft says those flows may

392
00:10:39,759 --> 00:10:41,360
not run reliably and may not

393
00:10:41,360 --> 00:10:43,000
return results at all in some

394
00:10:43,000 --> 00:10:43,320
cases.

395
00:10:43,320 --> 00:10:45,960
A new flow does not even appear
in the add action list.

396
00:10:45,960 --> 00:10:47,220
That is a real trap, because

397
00:10:47,220 --> 00:10:48,480
flows feel like the natural

398
00:10:48,480 --> 00:10:49,840
choice if you already use Power

399
00:10:49,840 --> 00:10:50,600
Automate.

400
00:10:50,600 --> 00:10:53,039
The fifth mistake is handing
copilot an API shape.

401
00:10:53,039 --> 00:10:55,799
It cannot read nested objects
inside a request.

402
00:10:55,799 --> 00:10:57,539
Certain combined schemas and API

403
00:10:57,539 --> 00:10:58,759
keys tucked into headers or

404
00:10:58,759 --> 00:10:59,919
query strings are simply not

405
00:10:59,919 --> 00:11:00,600
supported.

406
00:11:00,600 --> 00:11:03,399
A technically correct API can
still be the wrong API for a

407
00:11:03,399 --> 00:11:05,919
plugin, and flattening the shape
is the usual fix.

408
00:11:05,919 --> 00:11:08,799
The sixth mistake is assuming
that a demo tenant means it

409
00:11:08,799 --> 00:11:10,039
works for everyone.

410
00:11:10,039 --> 00:11:12,399
A tenant is just your
organization's private slice of

411
00:11:12,399 --> 00:11:16,039
Microsoft's cloud, and a demo
one is a practice copy of it.

412
00:11:16,039 --> 00:11:17,200
Plenty of features need an

413
00:11:17,200 --> 00:11:18,600
active copilot license and the

414
00:11:18,600 --> 00:11:19,440
right permissions.

415
00:11:19,440 --> 00:11:21,919
And when they are missing, the
failure is silent.

416
00:11:21,919 --> 00:11:23,350
The agent simply says it cannot

417
00:11:23,350 --> 00:11:25,029
respond with no clue about the

418
00:11:25,029 --> 00:11:25,950
real cause.

419
00:11:25,950 --> 00:11:28,549
The seventh mistake is expecting
everything to feel instant.

420
00:11:28,549 --> 00:11:29,909
Agents can answer slowly or

421
00:11:29,909 --> 00:11:31,269
return a retry message when they

422
00:11:31,269 --> 00:11:32,269
search too many knowledge

423
00:11:32,269 --> 00:11:33,669
sources or lean on a heavier

424
00:11:33,669 --> 00:11:34,230
model.

425
00:11:34,230 --> 00:11:36,950
A smaller model and fewer
sources usually speed things up,

426
00:11:36,950 --> 00:11:39,629
and some channels stream the
answer, while others deliver it

427
00:11:39,629 --> 00:11:40,350
in one lump.

428
00:11:40,350 --> 00:11:41,750
The last mistake is about
models.

429
00:11:41,750 --> 00:11:44,750
If an agent uses a third party
model, it can return an agent

430
00:11:44,750 --> 00:11:47,289
blocked error until an
administrator grants access to

431
00:11:47,289 --> 00:11:48,389
that model provider.

432
00:11:48,389 --> 00:11:50,990
In the European Union, that
access is off by default.

433
00:11:50,990 --> 00:11:53,230
None of these limits make plug
ins a bad idea.

434
00:11:53,230 --> 00:11:55,590
They mean the boring parts, the
licenses, the permissions, and

435
00:11:55,590 --> 00:11:58,629
the descriptions are where the
real work lives.

436
00:11:58,629 --> 00:12:00,389
What it costs and who controls
it.

437
00:12:00,389 --> 00:12:01,750
Money and control are the two

438
00:12:01,750 --> 00:12:02,990
questions that decide whether a

439
00:12:02,990 --> 00:12:03,870
project ever leaves the

440
00:12:03,870 --> 00:12:04,350
whiteboard.

441
00:12:04,350 --> 00:12:05,830
The good news comes first, and

442
00:12:05,830 --> 00:12:07,470
it is that the maker license is

443
00:12:07,470 --> 00:12:08,029
free.

444
00:12:08,029 --> 00:12:09,230
You can be assigned a Copilot

445
00:12:09,230 --> 00:12:10,549
Studio user license at no

446
00:12:10,549 --> 00:12:11,149
charge.

447
00:12:11,149 --> 00:12:12,590
Your organization still needs a

448
00:12:12,590 --> 00:12:13,950
prepaid credit subscription in

449
00:12:13,950 --> 00:12:15,289
place before that license can be

450
00:12:15,289 --> 00:12:16,029
handed out.

451
00:12:16,029 --> 00:12:18,669
The trial is the true free path,
and it lets you build and test

452
00:12:18,669 --> 00:12:19,950
without spending anything.

453
00:12:19,950 --> 00:12:21,950
As long as you accept that you
cannot publish.

454
00:12:21,950 --> 00:12:24,230
That is a fair trade for
learning because you can build

455
00:12:24,230 --> 00:12:26,830
real skills on a practice copy
of the tools.

456
00:12:26,830 --> 00:12:29,870
When you do want real users, the
currency is the copilot credit.

457
00:12:29,870 --> 00:12:32,929
Copilot studio sells credits in
packs of twenty five thousand

458
00:12:32,929 --> 00:12:34,830
and a pack runs two hundred
dollars per month.

459
00:12:34,830 --> 00:12:37,350
You can also pay as you go
through an Azure subscription

460
00:12:37,350 --> 00:12:39,309
with no upfront commitment.

461
00:12:39,309 --> 00:12:41,909
A pre-purchase plan saves you up
to twenty percent if you commit

462
00:12:41,909 --> 00:12:42,789
ahead of time.

463
00:12:42,789 --> 00:12:44,309
Credits measure effort, so a

464
00:12:44,309 --> 00:12:45,629
simple answer costs less than a

465
00:12:45,629 --> 00:12:47,070
complex action, and unused

466
00:12:47,070 --> 00:12:48,509
credits do not roll over to the

467
00:12:48,509 --> 00:12:49,309
next month.

468
00:12:49,309 --> 00:12:51,850
The name of the currency changed
in September of twenty twenty

469
00:12:51,850 --> 00:12:55,230
five, when Microsoft moved from
messages to copilot credits, the

470
00:12:55,230 --> 00:12:58,309
amounts per pack and the pay as
you go rates stayed the same.

471
00:12:58,309 --> 00:13:00,669
If your company already has a
Microsoft three hundred sixty

472
00:13:00,669 --> 00:13:03,549
five copilot license, the math
changes in your favor.

473
00:13:03,549 --> 00:13:06,029
Building internal agents for use
inside Microsoft three hundred

474
00:13:06,029 --> 00:13:08,990
sixty five can be covered at no
extra cost, and some answer

475
00:13:08,990 --> 00:13:10,269
types are billed at zero.

476
00:13:10,269 --> 00:13:12,789
Prices change over time, so
treat these numbers as a

477
00:13:12,789 --> 00:13:14,750
snapshot rather than a promise.

478
00:13:14,750 --> 00:13:15,950
Control is the other half of the

479
00:13:15,950 --> 00:13:16,990
story, and it sits with your

480
00:13:16,990 --> 00:13:18,070
administrators.

481
00:13:18,070 --> 00:13:19,590
Admins decide who can publish a

482
00:13:19,590 --> 00:13:21,190
plugin, who can use it, and

483
00:13:21,190 --> 00:13:22,470
which connectors are allowed at

484
00:13:22,470 --> 00:13:22,870
all.

485
00:13:22,870 --> 00:13:25,590
Microsoft has pulled much of
this into one place a plugin

486
00:13:25,590 --> 00:13:28,340
registry, the discovery,
publishing and governance of

487
00:13:28,340 --> 00:13:30,580
plugins live on a single page
instead of being scattered

488
00:13:30,580 --> 00:13:31,620
across the tenant.

489
00:13:31,620 --> 00:13:34,059
That matters for a beginner,
because it explains why your

490
00:13:34,059 --> 00:13:36,620
great idea might still need
someone else's approval before

491
00:13:36,620 --> 00:13:38,259
it reaches a single user.

492
00:13:38,259 --> 00:13:41,120
The registry also means a plugin
has a life cycle from planning

493
00:13:41,120 --> 00:13:44,299
to retirement, and someone has
to own each stage.

494
00:13:44,299 --> 00:13:47,179
The one thing to remember about
Copilot Studio plugins.

495
00:13:47,179 --> 00:13:49,620
So let us pull it back to the
one idea worth keeping.

496
00:13:49,620 --> 00:13:52,700
A plugin is a bundle that gives
copilot one new ability, and

497
00:13:52,700 --> 00:13:53,779
copilot reaches for it.

498
00:13:53,779 --> 00:13:56,419
When your words match its
description, the action inside

499
00:13:56,419 --> 00:13:59,620
the bundle is what actually
touches the outside service and

500
00:13:59,620 --> 00:14:01,100
permissions and licenses.

501
00:14:01,100 --> 00:14:03,220
Decide whether it ever gets that
far.

502
00:14:03,220 --> 00:14:04,940
None of this was ever really
about code.

503
00:14:04,940 --> 00:14:07,820
It was about clear descriptions,
honest limits, and knowing who

504
00:14:07,820 --> 00:14:08,740
controls the switch.

505
00:14:08,740 --> 00:14:09,899
And once you have those three

506
00:14:09,899 --> 00:14:11,139
things, the rest is just

507
00:14:11,139 --> 00:14:12,220
configuration.

508
00:14:12,220 --> 00:14:15,340
The connectors, the credits, and
the small print all sit around

509
00:14:15,340 --> 00:14:16,659
that one simple sentence.

510
00:14:16,659 --> 00:14:18,620
I have one question for you
before we finish.

511
00:14:18,620 --> 00:14:19,940
What is one task in your week

512
00:14:19,940 --> 00:14:20,820
that you would hand to an

513
00:14:20,820 --> 00:14:21,860
assistant if it could reach the

514
00:14:21,860 --> 00:14:22,539
right system?

515
00:14:22,539 --> 00:14:24,500
If this made the topic feel less
intimidating?

516
00:14:24,500 --> 00:14:28,539
Subscribe to M365 FM to master
the tools and the mindset

517
00:14:28,539 --> 00:14:30,019
shaping the future of work.
