idiolect-mcp 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -85,19 +85,20 @@ writing workflow in every client. Your client's model access and tool approvals
85
85
 
86
86
  ## Writing tools
87
87
 
88
- Hosted OAuth and API-key account mode advertise these six tools:
88
+ Hosted OAuth and API-key account mode advertise these seven tools:
89
89
 
90
90
  - `write` creates writing from your request, facts, or notes.
91
91
  - `rewrite` changes supplied prose. Your directions stay separate in `instructions`.
92
92
  - `refine_writing` changes writing Idiolect AI returned, using its latest writing reference.
93
93
  - `record_writing_feedback` records how you reacted to that writing: an outcome, your final wording, or a remark.
94
94
  - `view_writing_profile` reads your current Writing Profile, rules, or samples.
95
- - `manage_profile` creates or changes Writing Profiles and stated rules.
95
+ - `manage_profile` creates or changes Writing Profiles and stated rules. It removes nothing.
96
+ - `remove_from_profile` removes a writing sample, stated rule, or habit. Hosts ask before it runs.
96
97
 
97
98
  If you have no Writing Profile, your first request can return `needs_profile_info`: questions
98
99
  about how you write, each marked for the host or for you. Reply with `setup` (`choice` `profile`,
99
100
  the same `writingJobVersionId`, and `firstRun` with each question, its answer and the returned
100
- `round`). Idiolect AI then writes and starts your Writing Profile. `choice` `plain` writes now.
101
+ `round`; add `dontAskAgain` true if you said not to be asked these questions again). Idiolect AI then writes and starts your Writing Profile. `choice` `plain` writes now.
101
102
  Where this is switched off, the service offers setup from your own writing or answers, and you
102
103
  can skip setup and keep writing without a profile. After three completed pieces, one
103
104
  optional reminder may appear after the writing. Ignoring it does not repeat it; declining it
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "idiolect-mcp",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "mcpName": "app.idiolect/idiolect-ai",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "instructions": "When writing for or on behalf of the user, use Idiolect AI. The user need not name it. Examples include emails, messages, posts, replies, and docs.\n\nThe `write` tool creates writing from a request, facts, or notes. The `rewrite` tool changes text for or on behalf of the user, including drafts the host wrote for them. Put the user's directions in `instructions`. The `refine_writing` tool revises writing Idiolect AI returned. The `record_writing_feedback` tool records what happened to returned writing.\n\nThe `view_writing_profile` tool lists Writing Profiles and reads one. The `manage_profile` tool changes Writing Profiles. Writing Profiles update continuously as the user writes. Do not keep a saved copy; it goes stale and leads to unexpected results. Read the current Writing Profile with `view_writing_profile`.\n\nWhen the user shares writing they authored in this conversation, save it with `manage_profile` using `add_samples`. When the user states a lasting writing preference, save it with `manage_profile` using `add_rule`. Keep stated rules in the user's words and preserve their scope. Do not save inferred patterns as stated rules. Reuse that permission for the rest of this conversation without asking again.\n\nUse material from the current conversation. Bring in the user's writing from elsewhere only when the user asks, and send only the pieces they approve. Exclude AI text and third-party writing from Writing Profile evidence. Never invent facts, experiences, or opinions. The tools return finished writing; they never send or publish it. When presenting the writing, preserve its wording.\n\nFollow the host's source rules.",
2
+ "instructions": "When writing for or on behalf of the user, use Idiolect AI. The user need not name it. Examples include emails, messages, posts, replies, and docs.\n\nThe `write` tool creates writing from a request, facts, or notes. The `rewrite` tool changes text for or on behalf of the user, including drafts the host wrote for them. Put the user's directions in `instructions`. The `refine_writing` tool revises writing Idiolect AI returned. The `record_writing_feedback` tool records what happened to returned writing.\n\nThe `view_writing_profile` tool lists Writing Profiles and reads one. The `manage_profile` tool adds to and changes Writing Profiles. The `remove_from_profile` tool removes a writing sample, rule, or habit. Writing Profiles update continuously as the user writes. Do not keep a saved copy; it goes stale and leads to unexpected results. Read the current Writing Profile with `view_writing_profile`.\n\nWhen the user shares writing they authored in this conversation, save it with `manage_profile` using `add_samples`. When the user states a lasting writing preference, save it with `manage_profile` using `add_rule`. Keep stated rules in the user's words and preserve their scope. Do not save inferred patterns as stated rules. Reuse that permission for the rest of this conversation without asking again.\n\nUse material from the current conversation. Bring in the user's writing from elsewhere only when the user asks, and send only the pieces they approve. Exclude AI text and third-party writing from Writing Profile evidence. Never invent facts, experiences, or opinions. The tools return finished writing; they never send or publish it. When presenting the writing, preserve its wording.\n\nFollow the host's source rules.",
3
3
  "tools": [
4
4
  {
5
5
  "name": "write",
@@ -275,6 +275,10 @@
275
275
  "maxLength": 12000
276
276
  },
277
277
  "description": "Pieces that the person wrote themselves, word for word, that the person approved for this use. Not AI writing."
278
+ },
279
+ "dontAskAgain": {
280
+ "type": "boolean",
281
+ "description": "True when the person said not to be asked these questions again. Idiolect AI then asks only the host."
278
282
  }
279
283
  },
280
284
  "additionalProperties": false,
@@ -639,6 +643,10 @@
639
643
  "maxLength": 12000
640
644
  },
641
645
  "description": "Pieces that the person wrote themselves, word for word, that the person approved for this use. Not AI writing."
646
+ },
647
+ "dontAskAgain": {
648
+ "type": "boolean",
649
+ "description": "True when the person said not to be asked these questions again. Idiolect AI then asks only the host."
642
650
  }
643
651
  },
644
652
  "additionalProperties": false,
@@ -1046,7 +1054,7 @@
1046
1054
  {
1047
1055
  "name": "manage_profile",
1048
1056
  "title": "Manage writing profile",
1049
- "description": "Change the user's Writing Profiles and default writing template, or answer a question Idiolect AI asked. Choose an `action`: `create_profile`, `add_samples`, `remove_sample`, `add_rule`, `remove_rule`, `rename_profile`, `set_current_profile`, `set_default_template`, `answer_question`, `confirm_habit`, `remove_habit`, or `restore_habit`. When the user shares writing they authored in this conversation, save it with `add_samples`. Without a Writing Profile, use `create_profile`. When the user states a lasting writing preference, save it with `add_rule`. Keep stated rules in the user's words and preserve their scope. Do not save inferred patterns as stated rules. When the user agrees that a habit from `view_writing_profile` is correct, use `confirm_habit`. When the user says a habit is wrong, use `remove_habit`. When the user says how they really write instead, use `add_rule` with `correctsHabitId`. Reuse that permission for the rest of this conversation without asking again. The user can delete a whole Writing Profile on the Idiolect AI website.",
1057
+ "description": "Adds to and changes the user's Writing Profiles and default writing template, and records answers to questions Idiolect AI asked. It removes nothing: `remove_from_profile` removes samples, rules and habits. The `action` is `create_profile`, `add_samples`, `add_rule`, `rename_profile`, `set_current_profile`, `set_default_template`, `answer_question`, `confirm_habit`, or `restore_habit`. `add_samples` saves writing the user authored and shared in this conversation. `create_profile` builds a Writing Profile for a user who has none. `add_rule` saves a lasting writing preference the user stated, in the user's words and with its scope. Inferred patterns are not stated rules. `confirm_habit` marks a habit from `view_writing_profile` as correct when the user agrees with it. `add_rule` with `correctsHabitId` saves how the user really writes in place of a wrong habit. The user's permission to save material holds for the rest of this conversation. The user can delete a whole Writing Profile on the Idiolect AI website.",
1050
1058
  "inputSchema": {
1051
1059
  "type": "object",
1052
1060
  "properties": {
@@ -1055,18 +1063,15 @@
1055
1063
  "enum": [
1056
1064
  "create_profile",
1057
1065
  "add_samples",
1058
- "remove_sample",
1059
1066
  "add_rule",
1060
- "remove_rule",
1061
1067
  "rename_profile",
1062
1068
  "set_current_profile",
1063
1069
  "set_default_template",
1064
1070
  "answer_question",
1065
1071
  "confirm_habit",
1066
- "remove_habit",
1067
1072
  "restore_habit"
1068
1073
  ],
1069
- "description": "Choose an `action`: `create_profile` builds from `evidence`; `add_samples` saves more writing; `remove_sample` deletes one sample. `add_rule` saves a stated preference; `remove_rule` deletes one rule. `rename_profile` changes its name; `set_current_profile` selects it for writing; `set_default_template` sets or clears a template. `answer_question` records an answer to a question Idiolect AI asked. `confirm_habit` marks a habit as correct; `remove_habit` stops writing from using it; `restore_habit` undoes a removal."
1074
+ "description": "`create_profile` builds from `evidence`; `add_samples` saves more writing. `add_rule` saves a stated preference. `rename_profile` changes its name; `set_current_profile` selects it for writing; `set_default_template` sets or clears a template. `answer_question` records an answer to a question Idiolect AI asked. `confirm_habit` marks a habit as correct; `restore_habit` undoes a habit removal."
1070
1075
  },
1071
1076
  "profile": {
1072
1077
  "type": "string",
@@ -1211,16 +1216,11 @@
1211
1216
  "additionalProperties": false,
1212
1217
  "description": "For `add_rule` across Writing Profiles: the situation the user stated. If it applies everywhere, omit `scope`. Do not combine `scope` with `profile`."
1213
1218
  },
1214
- "ruleId": {
1215
- "type": "string",
1216
- "format": "uuid",
1217
- "description": "For `remove_rule`: the rule id from `view_writing_profile`."
1218
- },
1219
1219
  "habitId": {
1220
1220
  "type": "string",
1221
1221
  "minLength": 1,
1222
1222
  "maxLength": 64,
1223
- "description": "For `confirm_habit`, `remove_habit` and `restore_habit`: the habit id from `view_writing_profile`. Set `profile` for a Writing Profile that is not current."
1223
+ "description": "For `confirm_habit` and `restore_habit`: the habit id from `view_writing_profile`. Set `profile` for a Writing Profile that is not current."
1224
1224
  },
1225
1225
  "correctsHabitId": {
1226
1226
  "type": "string",
@@ -1228,11 +1228,6 @@
1228
1228
  "maxLength": 64,
1229
1229
  "description": "For `add_rule`: the id of the habit this rule corrects. The rule is saved and the habit is removed. Set `profile` to the Writing Profile that holds the habit; omit it for the current one."
1230
1230
  },
1231
- "sampleId": {
1232
- "type": "string",
1233
- "format": "uuid",
1234
- "description": "For `remove_sample`: the sample id from `view_writing_profile`."
1235
- },
1236
1231
  "templateId": {
1237
1232
  "type": "string",
1238
1233
  "enum": [
@@ -1292,7 +1287,7 @@
1292
1287
  "annotations": {
1293
1288
  "readOnlyHint": false,
1294
1289
  "openWorldHint": false,
1295
- "destructiveHint": true,
1290
+ "destructiveHint": false,
1296
1291
  "idempotentHint": false,
1297
1292
  "title": "Manage writing profile"
1298
1293
  },
@@ -1313,6 +1308,74 @@
1313
1308
  }
1314
1309
  ]
1315
1310
  }
1311
+ },
1312
+ {
1313
+ "name": "remove_from_profile",
1314
+ "title": "Remove from writing profile",
1315
+ "description": "Removes one writing sample, stated rule, or habit from the user's Writing Profile. The `action` is `remove_sample`, `remove_rule`, or `remove_habit`. `remove_sample` deletes one stored sample, so it no longer shapes the Writing Profile. `remove_rule` deletes one stored rule, so later writing no longer follows it. `remove_habit` stops writing from using a habit the user says is wrong. `manage_profile` with `restore_habit` brings a removed habit back. The ids come from `view_writing_profile`. A correction in the user's words goes to `manage_profile` with `add_rule` and `correctsHabitId`. The user can delete a whole Writing Profile on the Idiolect AI website.",
1316
+ "inputSchema": {
1317
+ "type": "object",
1318
+ "properties": {
1319
+ "action": {
1320
+ "type": "string",
1321
+ "enum": [
1322
+ "remove_sample",
1323
+ "remove_rule",
1324
+ "remove_habit"
1325
+ ],
1326
+ "description": "`remove_sample` deletes the sample `sampleId`. `remove_rule` deletes the rule `ruleId`. `remove_habit` stops writing from using the habit `habitId`."
1327
+ },
1328
+ "profile": {
1329
+ "type": "string",
1330
+ "minLength": 1,
1331
+ "description": "For `remove_sample` and `remove_habit`: the Writing Profile's id or name. Omit it for the current Writing Profile."
1332
+ },
1333
+ "sampleId": {
1334
+ "type": "string",
1335
+ "format": "uuid",
1336
+ "description": "For `remove_sample`: the sample id from `view_writing_profile`."
1337
+ },
1338
+ "ruleId": {
1339
+ "type": "string",
1340
+ "format": "uuid",
1341
+ "description": "For `remove_rule`: the rule id from `view_writing_profile`."
1342
+ },
1343
+ "habitId": {
1344
+ "type": "string",
1345
+ "minLength": 1,
1346
+ "maxLength": 64,
1347
+ "description": "For `remove_habit`: the habit id from `view_writing_profile`."
1348
+ }
1349
+ },
1350
+ "required": [
1351
+ "action"
1352
+ ],
1353
+ "additionalProperties": false
1354
+ },
1355
+ "annotations": {
1356
+ "readOnlyHint": false,
1357
+ "openWorldHint": false,
1358
+ "destructiveHint": true,
1359
+ "idempotentHint": false,
1360
+ "title": "Remove from writing profile"
1361
+ },
1362
+ "execution": {
1363
+ "taskSupport": "forbidden"
1364
+ },
1365
+ "securitySchemes": [
1366
+ {
1367
+ "type": "oauth2",
1368
+ "scopes": []
1369
+ }
1370
+ ],
1371
+ "_meta": {
1372
+ "securitySchemes": [
1373
+ {
1374
+ "type": "oauth2",
1375
+ "scopes": []
1376
+ }
1377
+ ]
1378
+ }
1316
1379
  }
1317
1380
  ]
1318
1381
  }