idiolect-mcp 0.6.2 → 0.6.3

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
@@ -78,11 +78,12 @@ writing workflow in every client. Your client's model access and tool approvals
78
78
 
79
79
  ## Writing tools
80
80
 
81
- Hosted OAuth and API-key account mode advertise these five tools:
81
+ Hosted OAuth and API-key account mode advertise these six tools:
82
82
 
83
83
  - `write` creates writing from your request, facts, or notes.
84
84
  - `rewrite` changes supplied prose. Your directions stay separate in `instructions`.
85
85
  - `refine_writing` changes writing Idiolect AI returned, using its latest writing reference.
86
+ - `record_writing_feedback` records how you reacted to that writing: an outcome, your final wording, or a remark.
86
87
  - `view_writing_profile` reads your current Writing Profile, rules, or samples.
87
88
  - `manage_profile` creates or changes Writing Profiles and stated rules.
88
89
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "idiolect-mcp",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
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.\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 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.",
3
3
  "tools": [
4
4
  {
5
5
  "name": "write",
@@ -540,7 +540,7 @@
540
540
  {
541
541
  "name": "refine_writing",
542
542
  "title": "Refine writing",
543
- "description": "Changes writing Idiolect AI returned, such as 'make it shorter and warmer'. The user does not need to name Idiolect AI again. It covers follow-ups on writing from `write`, `rewrite`, or `refine_writing`. The `refine_writing` tool revises returned writing, applies a ready-made template, or records its use. Send the latest `writingJobVersionId`, or `outputReference` when no version was returned, but not both. Send one of `change`, `templateId`, or `outcome`. If the change sets a new form, language or fact of the situation, send it in `format`, `language` or `situation`. The `finalText` field may come alone or with `outcome`. When the user reports use or the host observes completed use, send `outcome` with its `decisionSource`. When the final wording is known, send it in `finalText`. Set `editAuthor` to whoever edited it.",
543
+ "description": "Changes writing Idiolect AI returned, such as 'make it shorter and warmer'. The user does not need to name Idiolect AI again. It covers follow-ups on writing from `write`, `rewrite`, or `refine_writing`. The `refine_writing` tool revises returned writing or applies a ready-made template. Send the latest `writingJobVersionId`, or `outputReference` when no version was returned, but not both. Send `change` or `templateId` for a new version. If the change sets a new form, language or fact of the situation, send it in `format`, `language` or `situation`. Older hosts may still send `outcome`, `finalText` or `comment` here. Record reactions with `record_writing_feedback`.",
544
544
  "inputSchema": {
545
545
  "type": "object",
546
546
  "properties": {
@@ -649,7 +649,7 @@
649
649
  "user_told",
650
650
  "host_observed"
651
651
  ],
652
- "description": "Outcome source: `user_told` when the user said it, or `host_observed` when the host observed it. Omit when unknown."
652
+ "description": "`user_told` when the user said it; `host_observed` when you saw it. Omit when unknown."
653
653
  },
654
654
  "editAuthor": {
655
655
  "type": "string",
@@ -699,6 +699,91 @@
699
699
  "anthropic/alwaysLoad": true
700
700
  }
701
701
  },
702
+ {
703
+ "name": "record_writing_feedback",
704
+ "title": "Record writing feedback",
705
+ "description": "Use this when the user reacts to writing Idiolect AI returned, or you observe what happened to it. It records an outcome, final wording or comment. Feedback can update the user's Writing Profile. Send only what you know; `outcome` is optional. To change the writing, use `refine_writing`.",
706
+ "inputSchema": {
707
+ "type": "object",
708
+ "properties": {
709
+ "writingJobVersionId": {
710
+ "type": "string",
711
+ "format": "uuid",
712
+ "description": "Version ID returned for the writing this observation concerns. Send this or `outputReference`, not both."
713
+ },
714
+ "outputReference": {
715
+ "type": "string",
716
+ "format": "uuid",
717
+ "description": "Output reference returned for this writing. Use when no version ID is available."
718
+ },
719
+ "outcome": {
720
+ "type": "string",
721
+ "enum": [
722
+ "kept",
723
+ "edited",
724
+ "rejected",
725
+ "superseded"
726
+ ],
727
+ "description": "`kept`: used unchanged. `edited`: changed and used. `rejected`: unusable, not a revision request. `superseded`: the request changed. Otherwise omit."
728
+ },
729
+ "finalText": {
730
+ "type": "string",
731
+ "minLength": 1,
732
+ "maxLength": 20000,
733
+ "description": "The complete final wording, verbatim, when the writing was edited. Never send an AI-written retry here."
734
+ },
735
+ "comment": {
736
+ "type": "string",
737
+ "minLength": 1,
738
+ "maxLength": 20000,
739
+ "description": "What the user said about the writing, in their words. Do not invent or paraphrase."
740
+ },
741
+ "decisionSource": {
742
+ "type": "string",
743
+ "enum": [
744
+ "user_told",
745
+ "host_observed"
746
+ ],
747
+ "description": "`user_told` when the user said it; `host_observed` when you saw it. Omit when unknown."
748
+ },
749
+ "editAuthor": {
750
+ "type": "string",
751
+ "enum": [
752
+ "user",
753
+ "host",
754
+ "other",
755
+ "unknown"
756
+ ],
757
+ "description": "Who changed the wording: `user`, `host`, `other`, or `unknown`. Omission means unknown."
758
+ }
759
+ },
760
+ "additionalProperties": false
761
+ },
762
+ "annotations": {
763
+ "readOnlyHint": false,
764
+ "destructiveHint": false,
765
+ "idempotentHint": true,
766
+ "openWorldHint": false,
767
+ "title": "Record writing feedback"
768
+ },
769
+ "execution": {
770
+ "taskSupport": "forbidden"
771
+ },
772
+ "securitySchemes": [
773
+ {
774
+ "type": "oauth2",
775
+ "scopes": []
776
+ }
777
+ ],
778
+ "_meta": {
779
+ "securitySchemes": [
780
+ {
781
+ "type": "oauth2",
782
+ "scopes": []
783
+ }
784
+ ]
785
+ }
786
+ },
702
787
  {
703
788
  "name": "view_writing_profile",
704
789
  "title": "View writing profile",