lifeos-mcp
Provides read access to a LifeOS knowledge base, enabling OpenAI Codex agents to retrieve identity, preferences, skills, projects, wiki pages, rules, and perform full-text search.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lifeos-mcpshow my current projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LifeOS MCP
Give any AI agent read access to your LifeOS knowledge base — Claude Desktop, Claude Code, Cursor, ChatGPT, Codex, or any MCP-compatible client.
The server reads from ~/lifeos/ and surfaces everything through lifeos:// resource URIs and lifeos__* tool names.
Install
Once published (coming soon)
npx lifeos-mcpFrom source (now)
git clone https://github.com/bwats/lifeos-mcp
cd lifeos-mcp
npm install && npm run build
node bin/lifeos-mcp.jsGlobal install from source
cd ~/lifeos-mcp
npm install -g .
lifeos-mcp # starts the MCP server on stdioWhat it exposes
lifeos-mcp gives any MCP-compatible AI client direct read access to:
Surface | Path in ~/lifeos/ | Tool |
Identity |
|
|
Preferences |
|
|
Skills |
|
|
Projects |
|
|
Wiki |
|
|
Rules |
|
|
Any file | (path-safe) |
|
Search | (full-text) |
|
Modes
Invocation | What happens |
| Start MCP server on stdio (default) |
| Start MCP server on stdio (explicit) |
| List rituals in |
| Validate a ritual spec file |
| Render ritual to a target harness |
| Show all subcommands and options |
Configure MCP clients
Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"lifeos": {
"command": "npx",
"args": ["lifeos-mcp"]
}
}
}Or from source:
{
"mcpServers": {
"lifeos": {
"command": "node",
"args": ["/Users/yourname/lifeos-mcp/bin/lifeos-mcp.js"]
}
}
}Cursor (settings.json)
{
"mcpServers": {
"lifeos": {
"command": "node",
"args": ["/Users/yourname/lifeos-mcp/bin/lifeos-mcp.js"]
}
}
}Claude Code (~/.claude/settings.json)
{
"mcpServers": {
"lifeos": {
"command": "node",
"args": ["/Users/yourname/lifeos-mcp/bin/lifeos-mcp.js"]
}
}
}OpenAI Codex (codex.json)
{
"mcpServers": {
"lifeos": {
"command": "node",
"args": ["/Users/yourname/lifeos-mcp/bin/lifeos-mcp.js"]
}
}
}Custom LifeOS path
Pass --lifeos-path or set LIFEOS_PATH env var:
{
"mcpServers": {
"lifeos": {
"command": "node",
"args": [
"/Users/yourname/lifeos-mcp/bin/lifeos-mcp.js",
"--lifeos-path", "/custom/path/to/lifeos"
]
}
}
}Environment variables
Variable | Default | Description |
|
| Absolute path to the LifeOS root directory |
Tools
Tool | Description |
| Check server health and LifeOS availability |
| Read |
| Read |
| List all skill directory names in |
| Read documentation for a named skill |
| List rule/guideline names from |
| Read a specific rule file |
| List project filenames from |
| Read a specific project definition |
| List all wiki page paths recursively |
| Read a wiki page by path |
| Full-text search across all LifeOS files |
| Read any file under |
| Propose a typed semantic edge between two knowledge nodes |
| Accept a proposed edge (write-opt-in required) |
| Reject a proposed edge (write-opt-in required) |
| List pending edge proposals (always read-only) |
Resources
URI | Description |
| LifeOS identity profile ( |
| User preferences ( |
| Skill documentation for |
| Project definition for |
| Wiki page at |
| System rule at |
All template resources support listing — clients can enumerate available resources.
CLI subcommands
# List all rituals with id, title, and trigger summary
lifeos-mcp list
# Validate a ritual spec (structural check)
lifeos-mcp validate ~/lifeos/cadence/rituals/morning-review.md
# Render a ritual to a harness
lifeos-mcp render ~/lifeos/cadence/rituals/morning-review.md --to openclaw
lifeos-mcp render ~/lifeos/cadence/rituals/morning-review.md --to claude-codeRenderer interface (pluggable)
Third-party renderers plug in at runtime via registerRenderer:
import { registerRenderer } from "lifeos-mcp/dist/renderers/index.js";
registerRenderer({
name: "my-harness",
async render(spec, body, ctx) {
return {
files: [{ path: "/out/job.json", content: JSON.stringify(spec) }],
summary: `Rendered ${spec.id} to my-harness`,
};
},
});Built-in renderers: openclaw (cron job JSON), claude-code (slash command + launchd plist).
Security
All file paths are validated to stay within the LifeOS root — no path traversal possible.
The server is read-only by default; write tools (
lifeos__propose_edge,lifeos__accept_edge,lifeos__reject_edge) require explicit opt-in via~/Library/Application Support/LifeOS/mcp-write-config.json.Only files under
~/lifeos/(orLIFEOS_PATH) are accessible.
Build
cd ~/lifeos-mcp
npm install
npm run build
# Output: dist/ + bin/lifeos-mcp.jsLicense
MIT
Available Tools
17 toolslifeos__accept_edgeA
Accept a proposed edge in the LifeOS Curator inbox. Optionally edit rationale, type, or citations before accepting. Fires a curator: git commit in ~/lifeos/.
| Name | Required | Description | Default |
|---|---|---|---|
| edge_id | Yes | Edge ID returned by lifeos__propose_edge | |
| edits | No | Optional edits — only rationale and type can be changed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effect: 'Fires a curator: git commit in ~/lifeos/', which is not in schema or annotations. Adds behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, effectively communicates purpose and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or return value description, but for a simple accept action it's largely sufficient. Sibling tools provide context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100%. Description adds meaning: edge_id source ('returned by lifeos__propose_edge') and clarifies allowed edits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Accept a proposed edge' and distinguishes from siblings like 'reject_edge' and 'propose_edge'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (accept proposed edge, optionally edit) and implicitly contrasts with reject. No explicit when-not, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__get_identityA
Read the user's identity profile from LifeOS (identity.md). Returns frontmatter metadata and full content.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation ('Read'), which is non-destructive. With no annotations, it provides sufficient transparency about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the verb and resource, with no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description adequately explains the return format (frontmatter and full content). Could specify file format but is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description correctly does not add parameter details, and the baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads the user's identity profile from a specific file (identity.md) and specifies the return content (frontmatter metadata and full content). It distinguishes from siblings like 'lifeos__get_preferences' by being a specific identity read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. However, given its specific purpose, usage is implied when identity data is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__get_preferencesA
Read the user's preferences from LifeOS (preferences.md).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond the basic read operation. It does not specify whether it is safe, idempotent, or requires authentication, leaving a gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the purpose without any wasted words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description is minimally adequate. It explains what the tool does but omits details about the return format or content of preferences, which could be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema description coverage is 100%. Per guidelines, 0 params warrants a baseline of 4. The description adds no parameter details, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Read), the resource (user's preferences), and the source (preferences.md), making it distinct from sibling tools like lifeos__get_identity or lifeos__read_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are any exclusions or prerequisites mentioned. The description simply states the function without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__healthA
Check the health of the LifeOS MCP server and LifeOS data availability.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It indicates a read-only check but omits details on what exact aspects are checked, whether it has side effects, or what the return format is. Lacks behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no wasted words. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is functional but minimal. It could be more informative (e.g., what constitutes healthy, response format), but is adequate for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters (100% coverage). The description does not need to add parameter meaning. Baseline is 4 for no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Check' and resource 'health of the LifeOS MCP server and LifeOS data availability', clearly distinguishing it from sibling tools that perform specific operations like reading files or listing projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It implies a diagnostic role, but provides no guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__list_projectsA
List all project definition files from LifeOS (~/lifeos/projects/*.md).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides minimal behavioral disclosure (lists files at given path) but omits error handling, return format, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence with 10 words, front-loaded with the action and resource, containing no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple with no parameters, the description does not specify the output format (e.g., list of filenames or paths), which could aid completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so no parameter documentation is needed. The description is sufficient for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'project definition files' with a specific file path pattern, distinguishing it from sibling list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool versus alternatives like list_wiki_pages or read_project, leaving agents to infer use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__list_rulesA
List system rules and guidelines from LifeOS (~/lifeos/system/ markdown files).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It indicates reading from markdown files, implying a read-only operation. No contradictions. Additional details (e.g., effect of missing files) are minimal but acceptable for a list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key info, no waste. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description adequately specifies what is listed and from where. It is complete for the intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has no parameters (100% coverage). Baseline for 0 params is 4. Description adds no parameter info, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and the resource (system rules and guidelines from a specific directory). It distinguishes itself from sibling tools like lifeos__read_rule, which reads a single rule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., lifeos__read_rule). The context implies it's for listing all rules, but lacks when-not or comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__list_skillsA
List all available skills in LifeOS (~/lifeos/skills/ directories).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states action without behavioral details (e.g., output format, ordering). Adequate for a simple list tool but does not exceed basic requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded with verb and object. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides enough context (directory path, scope) for a list tool. Could mention recursion behavior, but not critical. Complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has no parameters; description adds context (directory path) beyond schema. Baseline 4 for 0-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb (list), resource (skills), and scope (all available) with directory path. Distinct from sibling tools like read_skill or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives, but implied by the tool's name and simplicity. Minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__list_wiki_pagesA
List all wiki pages from LifeOS (~/lifeos/wiki/pages/ recursively).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the operation is listing (non-destructive) and specifies recursion, which provides good behavioral context. Missing details like file extensions or auth requirements, but the simplicity mitigates this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise, front-loaded, and contains no fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters, the description covers the essential context (location, recursion). Lacks output details but is likely sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters, and schema coverage is 100%. The description does not need to explain parameters; a baseline of 4 is appropriate as it adds no unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List', the resource 'wiki pages', and the specific location 'from LifeOS (~/lifeos/wiki/pages/ recursively)'. It distinguishes from sibling tool 'read_wiki_page' which reads a single page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus others like 'read_wiki_page' or 'search'. Usage is implied but lacks explicit guidance on alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__propose_edgeA
Propose a typed semantic edge between two vault nodes. Routes through CitationVerifier and NoveltyScorer. Edge lands in the LifeOS Curator inbox with reviewState=proposed for user review.
| Name | Required | Description | Default |
|---|---|---|---|
| src | Yes | Source path (vault-relative), optionally with #anchor | |
| dst | Yes | Destination path (vault-relative), optionally with #anchor | |
| type | Yes | Semantic relationship type (9-item enum) | |
| directionality | No | Edge direction — defaults to a_to_b | |
| confidence | Yes | Caller's self-assessed confidence in this edge (0–1) | |
| quote_a | Yes | Verbatim excerpt from the src file supporting this edge | |
| quote_b | Yes | Verbatim excerpt from the dst file supporting this edge | |
| rationale | Yes | Why this edge exists — stored in mcp_metadata for the Curator review UI | |
| speculative | No | True if this edge is speculative / low-confidence |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses routing through CitationVerifier and NoveltyScorer and that the edge lands in the Curator inbox with reviewState=proposed. No annotations exist so description carries full burden; mostly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key action, no redundancy. Every sentence adds value: action, processing steps, and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, processing, and destination but omits return value or confirmation of success. With no output schema, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline at 3. Description adds no new parameter meaning beyond indicating the edge type is 'typed' and the overall process, which is already clear from schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states the tool proposes a typed semantic edge between two vault nodes, distinguishing it from siblings like accept_edge and reject_edge. Includes routing and outcome details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for creating edge proposals, with accept/reject as counterparts, but lacks explicit when-to-use, when-not-to-use, or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__read_fileA
Read any file under ~/lifeos/ by relative path. Path is validated to stay within LifeOS root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Relative path from ~/lifeos/ root (e.g. 'identity.md', 'skills/github/README.md') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses path validation to ensure files remain under ~/lifeos/, which is a key security behavior. However, with no annotations, it lacks details on file existence handling, return format (raw content vs. structured), size limits, or error cases. Transparency is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with minimal waste. The first sentence front-loads the core action and scope, and the second adds a critical constraint. Every word is necessary and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description covers purpose and path security but omits expected behavior (e.g., returns file contents as a string, error on missing file, handling binary files). This leaves some ambiguity for an agent unfamiliar with the system.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a detailed description of the 'path' parameter with examples. The description adds the context that path validation occurs to keep access within the root, which is not explicit in the schema. This supplementary information enhances semantic understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'any file under ~/lifeos/ by relative path'. This distinguishes it from sibling tools like lifeos__read_skill or lifeos__read_project, which target specific file types. The intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for reading arbitrary files within the LifeOS root, but it does not provide explicit guidance on when to use this vs. the dedicated read tools for specific files (e.g., read_skill). No 'when-not-to-use' or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__read_pending_queueA
List proposed edges waiting in the LifeOS Curator inbox. Read-only — no write opt-in required. Use since and limit to paginate.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ISO-8601 timestamp — return only edges queued after this time. Omit for all pending. | |
| limit | No | Max edges to return (default 50, max 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It correctly states the tool is read-only and requires no write opt-in, but does not discuss edge cases (e.g., empty queue, default behavior) or potential rate limits or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two short sentences. Front-loaded with action and resource, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema), the description is complete. It explains what the tool does, when to use it (read-only context), and how to paginate. Sibling tools like accept_edge and reject_edge provide additional context for the queue management workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers both parameters with descriptions (100% coverage). The description adds value beyond schema by explaining how to use 'since' and 'limit' together for pagination, which is not explicitly in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies the verb 'List' and resource 'proposed edges waiting in the LifeOS Curator inbox'. It distinguishes itself from sibling mutation tools (accept/reject) by explicitly stating it is read-only and requires no write opt-in.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: 'Read-only — no write opt-in required' implies when to use (viewing pending edges without needing write permissions). It also instructs to use 'since' and 'limit' for pagination, giving practical usage guidance, though it does not explicitly mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__read_projectA
Read a specific project definition from LifeOS. Use lifeos__list_projects to see available names.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name (e.g. 'cadence-graph-mvp', 'dispatch') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must convey behavioral traits. It only states the action 'read', implying no side effects, but does not explicitly mention idempotency, authorization requirements, or any other behavioral constraints. More disclosure is needed for a mutation-free guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence stating the purpose and one sentence providing usage guidance. No fluff, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description covers the essential usage (what it does and how to find project names). However, it lacks any hint about the structure of the returned project definition, which would be helpful given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with a clear description and examples for the 'name' parameter. The description adds no additional semantic meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'read' and the resource 'project definition from LifeOS', and distinguishes itself from siblings by pointing to lifeos__list_projects for discovering available names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells to use lifeos__list_projects to get available names, providing clear guidance on when to use this tool (you need to know the project name). No explicit when-not-to-use, but the sibling reference adequately covers alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__read_ruleA
Read a specific rule/guideline from LifeOS system/ directory. Use lifeos__list_rules to see available names.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Rule name (e.g. 'guardian', 'changelog') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description indicates read-only operation but doesn't disclose behavior on missing rule, return format, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with upfront verb and resource, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one required param and no output schema; description covers purpose and name discovery, but lacks return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers parameter 100% with an example; tool description adds no extra meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Read' and resource 'specific rule/guideline from LifeOS system/ directory', distinguishing from sibling list_rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly suggests using lifeos__list_rules to find available names, implying when to use this tool (when name is known) and an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__read_skillA
Read the documentation for a specific skill from LifeOS. Use lifeos__list_skills first to see available names.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill directory name (e.g. 'github', 'linear_api') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the full burden. It implies a read operation with no side effects, but lacks details on what 'documentation' entails (e.g., format, length) or any behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, prerequisite, and parameter. Missing output format information, which would be helpful for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema coverage. Description repeats the schema's example, adding no extra meaning. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read the documentation for a specific skill' with a specific verb and resource. It distinguishes from siblings like lifeos__list_skills by mentioning to use that first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use lifeos__list_skills first to get available names, providing clear context. No alternatives or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__read_wiki_pageA
Read a specific wiki page from LifeOS. Use lifeos__list_wiki_pages to see available names.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Wiki page path (e.g. 'domains/aok', 'people/brian') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While it indicates this is a read operation, it does not specify what the response contains, what happens on non-existent pages, or any other behavioral traits. The lack of output schema makes this gap significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no unnecessary words. Every sentence adds value: the first states the purpose, the second provides usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool, the description covers the basic purpose and usage guidance. However, it lacks information about the output format or what the tool returns, which is expected for a read operation without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage with an example path (e.g., 'domains/aok'). The description does not add any additional meaning beyond what the schema already provides, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Read) and the resource (a specific wiki page from LifeOS). It also differentiates from the sibling tool lifeos__list_wiki_pages by directing users to use that tool to see available names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (to read a specific wiki page) and suggests an alternative (lifeos__list_wiki_pages) for discovering available names, providing clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__reject_edgeA
Reject a proposed edge in the LifeOS Curator inbox. Reason is required — it feeds the rejection corpus used to improve future proposals.
| Name | Required | Description | Default |
|---|---|---|---|
| edge_id | Yes | Edge ID to reject | |
| reason | Yes | Why this edge is being rejected. Required — feeds the T3 rejection corpus. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the action (rejection) and that the reason feeds a corpus, but does not mention post-rejection behavior (e.g., whether the edge is removed or archived) or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, front-loaded with the core action and key constraint. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-string-parameter tool with no output schema, the description sufficiently covers purpose, required parameters, and the reasoning process behind rejection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the reason parameter's role in the rejection corpus beyond the schema's description. Edge_id is not further elaborated, but the added context for reason justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('reject'), resource ('proposed edge in LifeOS Curator inbox'), and unique context ('feeds the rejection corpus'). It effectively distinguishes from siblings like accept_edge and propose_edge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mandates a reason and explains its purpose, providing good usage context. However, it does not specify when not to use this tool (e.g., vs. accept_edge) or offer explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lifeos__searchB
Full-text search across all LifeOS files (identity, projects, skills, wiki, rules, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term to look for (case-insensitive) | |
| maxResults | No | Maximum results to return (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the burden is on the description. It mentions case-insensitive search but omits behavior like handling multiple words, result format, or metadata search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal for a search tool with no output schema; lacks details on result format or behavior when no results found, but adequate given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions; the description adds context that search is full-text across files, justifying a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs full-text search across all LifeOS file types, distinguishing it from siblings like read_file and list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like list_* or read_* tools; the description only implies broad use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct entity or action: identity, preferences, projects, rules, skills, wiki, edges, health, file reading, and search. No two tools have overlapping purposes, making it easy for an agent to select the correct one.
Tools follow a consistent 'lifeos__verb_noun' pattern with underscores. Most use 'list_' for listing and 'read_' for reading, but 'get_identity' and 'get_preferences' use 'get_', and 'health' and 'search' are single-word actions. Minor inconsistency but overall predictable.
17 tools is well-scoped for a personal knowledge management system. It covers core reading, edge curation, search, and health check without being overwhelming. Each tool serves a clear purpose.
The tool set provides comprehensive read access and edge management, but lacks CRUD operations for identity, preferences, projects, rules, skills, and wiki pages. Only edges have full lifecycle. This creates gaps for an agent wanting to modify core content.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Knowledge base MCP for AI agents on iknow.dev. Search, read, and maintain via OAuth.
People + life-in-days knowledge for AI agents. Public MCP; x402 on Base; OAuth for private tools.
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bwats/lifeos-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server