ContextLayer
REMOTE · API.DOTNOVA.IO · SCANNED SEP 20
Intelligent context infrastructure for AI teams: knowledge graph, sessions, tasks, documents.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 62 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability86
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 7903 tokens (~121/item across 65 items; 62 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 11 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_document" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 64 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the ContextLayer MCP server?
ContextLayer is a hosted endpoint at https://api.dotnova.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.dotnova.io
claude mcp add --transport http dotnova-context-layer 'https://api.dotnova.io/mcp'
{
"mcpServers": {
"dotnova-context-layer": {
"url": "https://api.dotnova.io/mcp"
}
}
} {
"servers": {
"dotnova-context-layer": {
"type": "http",
"url": "https://api.dotnova.io/mcp"
}
}
} [mcp_servers.dotnova-context-layer] url = "https://api.dotnova.io/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dotnova-context-layer": {
"type": "remote",
"url": "https://api.dotnova.io/mcp",
"enabled": true
}
}
} openclaw mcp add dotnova-context-layer --url 'https://api.dotnova.io/mcp' --transport streamable-http
mcp_servers:
dotnova-context-layer:
url: "https://api.dotnova.io/mcp" {
"McpServers": {
"dotnova-context-layer": {
"Transport": "http",
"Url": "https://api.dotnova.io/mcp"
}
}
} assistant mcp add dotnova-context-layer -t streamable-http -u 'https://api.dotnova.io/mcp'
{
"mcpServers": {
"dotnova-context-layer": {
"type": "http",
"url": "https://api.dotnova.io/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 26 Aug 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
- 24 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 6 Aug 26 0
- Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 62 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. security
- Schema quality: unverified → fail ▼ functional
- Schema quality: 2231 → 121 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: 100 functional
- First check of Tool coverage: 100 functional
- New resource “Current Block” functional
- New resource “Projects” functional
- New resource “User Profile” functional
- New tool “accept_org_invite” functional
- New tool “add_task_dependency” functional
- New tool “add_team_member” functional
- New tool “assign_task” functional
- New tool “create_position” functional
- New tool “create_project” functional
- New tool “create_sprint” functional
- New tool “create_task” functional
- New tool “create_team” functional
- New tool “delete_document” functional
- New tool “delete_position” functional
- New tool “delete_project” functional
- New tool “delete_task” functional
- New tool “delete_team” functional
- New tool “delete_user” functional
- New tool “end_session” functional
- New tool “find_documents” functional
- New tool “get_context” functional
- New tool “get_context_routing” functional
- New tool “get_document” functional
- New tool “get_live_activity” functional
- New tool “get_my_stats” functional
- New tool “get_org_stats” functional
- New tool “get_project_status” functional
- New tool “get_session_details” functional
- New tool “get_team_details” functional
- New tool “invite_user” functional
- New tool “link_task_session” functional
- New tool “link_team_project” functional
- New tool “list_colleagues” functional
- New tool “list_notifications” functional
- New tool “list_pending_invites” functional
- New tool “list_positions” functional
- New tool “list_project_members” functional
- New tool “list_project_teams” functional
- New tool “list_projects” functional
- New tool “list_sessions” functional
- New tool “list_sprints” functional
- New tool “list_tasks” functional
- New tool “list_teams” functional
- New tool “log_activity” functional
- New tool “log_trace” functional
- New tool “log_traces_batch” functional
- New tool “mark_notification_read” functional
- New tool “move_task_to_sprint” functional
- New tool “remove_task_dependency” functional
- New tool “remove_team_member” functional
- New tool “remove_user_from_org” functional
- New tool “search_entities” functional
- New tool “set_context_routing” functional
- New tool “setup_organization” functional
- New tool “start_session” functional
- New tool “unassign_task” functional
- New tool “unlink_team_project” functional
- New tool “update_org” functional
- New tool “update_position” functional
- New tool “update_project” functional
- New tool “update_task” functional
- New tool “update_team” functional
- New tool “update_user” functional
- New tool “upload_document” functional
- New tool “whoami” functional
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://api.dotnova.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.dotnova.io | CN=YE2,O=Let's Encrypt,C=US | 4 Sept 2026 | 3 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 5eed67061c17caf3f5dbc691a3f56b22b9d |
| SANs: api.dotnova.io | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.dotnova.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| dotnova.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.dotnova.io/mcp | Verified | 200 | |
| http (plaintext) | http://api.dotnova.io/mcp | HTTPS enforced | 308 | https://api.dotnova.io/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
setup_organization ~157
Set up your organization in one step (admin only). Use this for onboarding.
| Name | Type | Req | Description |
|---|---|---|---|
| business_model | string | yes | Business model description |
| custom_context | string|null | – | Custom context for AI agents (optional) |
| description | string | yes | Organization description |
| links | array|null | – | Links: [{"label": "...", "url": "...", "type": "website|repository|documentation|slack|jira|notion|figma|other"}] |
| objectives | array | yes | Organization objectives |
| projects | array|null | – | Projects to create: [{"name": "...", "description": "..."}] |
| teams | array|null | – | Teams to create: [{"name": "...", "description": "..."}] |
No output schema declared.
No examples provided.
start_session ~204
Start a work session. If a project is provided (project_name or project_id), the session is bound to it; if neither is provided, an unbound (projectless) session is created — useful when the work isn't tied to a specific project. Reuses an existing active session for the same scope (per-project, or one global projectless session per user). Task type: coding, review, planning, debugging, research, meeting, other.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string|null | – | Project ID to start the session in (optional if project_name provided) |
| project_name | string|null | – | Project name (optional, alternative to project_id) |
| source | string|null | – | Source client identifier (e.g. 'claude-code', 'claude-web', 'chatgpt', 'cursor'). Helps track which tool created the session. |
| task_type | string | yes | Type of task: coding, review, planning, debugging, research, meeting, other |
No output schema declared.
No examples provided.
unassign_task ~46
Remove a user from a task's assignees.
| Name | Type | Req | Description |
|---|---|---|---|
| task_id | string | yes | Task ID |
| user_id | string | yes | User ID to remove from assignees |
No output schema declared.
No examples provided.
unlink_team_project ~96
Unlink a project from a team. Find both by name or ID.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string|null | – | Project ID (optional if project_name is provided) |
| project_name | string|null | – | Project name (optional if project_id is provided) |
| team_id | string|null | – | Team ID (optional if team_name is provided) |
| team_name | string|null | – | Team name (optional if team_id is provided) |
No output schema declared.
No examples provided.
update_org ~132
Update your organization's details (owner only). Set name, description, business model, objectives, custom context for AI, or links.
| Name | Type | Req | Description |
|---|---|---|---|
| business_model | string|null | – | Business model description (optional) |
| custom_context | string|null | – | Custom context for AI agents (optional) |
| description | string|null | – | Organization description (optional) |
| links | – | – | Links as JSON array: [{"label": "...", "url": "...", "type": "..."}] (optional) |
| name | string|null | – | Organization name (optional) |
| objectives | array|null | – | Objectives as a list of strings (optional) |
No output schema declared.
No examples provided.
update_position ~129
Update a position's title, description, or permissions (admin only). Find by title or ID.
| Name | Type | Req | Description |
|---|---|---|---|
| new_description | string|null | – | New description (optional) |
| new_permissions | – | – | New permissions JSON object mapping permission keys to booleans, e.g. {"can_view_all_projects": true}. Use list_positions to see all available keys. |
| new_title | string|null | – | New title (optional) |
| position_id | string|null | – | Position ID (optional if position_title is provided) |
| position_title | string|null | – | Position title to find (optional if position_id is provided) |
No output schema declared.
No examples provided.
update_project ~116
Update a project's name, description, or links. Find by name or ID.
| Name | Type | Req | Description |
|---|---|---|---|
| links | – | – | Links as JSON array: [{"label": "...", "url": "...", "type": "..."}] (optional) |
| new_description | string|null | – | New description (optional) |
| new_name | string|null | – | New name (optional) |
| project_id | string|null | – | Project ID (optional if project_name is provided) |
| project_name | string|null | – | Project name to find (optional if project_id is provided) |
No output schema declared.
No examples provided.
update_task ~206
Update a task's status, title, description, priority, or team assignment. Use this to move tasks through the workflow (todo -> in_progress -> done) or reassign to a team.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string|null | – | New description |
| due_at | string|null | – | Due date in ISO 8601 format (e.g. '2026-03-15T00:00:00Z'), or null to clear |
| priority | string|null | – | New priority: low, medium, high, urgent |
| status | string|null | – | New status: todo, in_progress, done, cancelled |
| tags | array|null | – | New tags (replaces existing tags) |
| task_id | string | yes | Task ID to update |
| team_id | string|null | – | Team ID to assign (optional) |
| team_name | string|null | – | Team name to assign (optional, alternative to team_id) |
| title | string|null | – | New title |
No output schema declared.
No examples provided.
update_team ~102
Update a team's name, description, or objectives. Find by name or ID.
| Name | Type | Req | Description |
|---|---|---|---|
| new_description | string|null | – | New description (optional) |
| new_name | string|null | – | New name (optional) |
| new_objectives | array|null | – | New objectives (optional) |
| team_id | string|null | – | Team ID (optional if team_name is provided) |
| team_name | string|null | – | Team name to find (optional if team_id is provided) |
No output schema declared.
No examples provided.
update_user ~101
Update an existing user's name, role, positions, or skills (admin/owner only).
| Name | Type | Req | Description |
|---|---|---|---|
| new_name | string|null | – | New name (optional) |
| new_role | string|null | – | New role: member or admin (optional) |
| positions | array|null | – | Position titles to assign (optional — replaces existing) |
| skills | array|null | – | Skills list (optional — replaces existing) |
| user | string | yes | User name or email to find |
No output schema declared.
No examples provided.
upload_document ~358
Upload a document to the organization's knowledge base. Documents can be templates, policies, contracts, procedures, guides, or references. They are indexed in the knowledge graph and automatically surfaced as context when relevant to a task. Supports both text and binary files: for binary files (PDFs, images, etc.), set is_base64=true and provide the content as a base64-encoded string, along with the appropriate mime_type (e.g. 'application/pdf', 'image/png'). Optionally set file_name for the original filename. Embeddings are generated automatically for search.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Category: template, policy, procedure, reference, contract, guide, checklist, other |
| content | string | yes | Full document content (text/markdown) |
| file_name | string|null | – | Original file name (e.g. 'contract.pdf'). Optional. |
| is_base64 | boolean|null | – | Set to true if content is base64-encoded (for binary files like PDFs, images) |
| mime_type | string|null | – | MIME type of the content (default: text/plain). Use application/pdf, image/png, etc. for binary files. |
| project_id | string|null | – | Project ID to associate with (optional, alternative to project_name) |
| project_name | string|null | – | Project name to associate with (optional) |
| tags | array|null | – | Tags for categorization and search (e.g. ['tax', 'contract', 'template']) |
| team_ids | array|null | – | Team IDs to associate with (optional, alternative to team_names) |
| team_names | array|null | – | Team names to associate the document with (optional, for team-level access control) |
| title | string | yes | Document title |
No output schema declared.
No examples provided.
whoami ~42
Get your profile, organization, projects, recent sessions, and top entities. This is the best starting point — call this first to understand what's available. No parameters needed.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the ContextLayer MCP server?
ContextLayer is an MCP server listed in the public MCP registry as io.github.DotNova/context-layer. Intelligent context infrastructure for AI teams: knowledge graph, sessions, tasks, documents. This page covers its hosted endpoint (https://api.dotnova.io/mcp).
Is the ContextLayer MCP server safe to use?
ContextLayer scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ContextLayer MCP server expose?
ContextLayer exposes 62 tools: accept_org_invite, add_task_dependency, add_team_member, assign_task, create_position, and 57 more. Their descriptions and schemas cost roughly 5,634 tokens of context every time the server is loaded.
Does the ContextLayer MCP server require authentication?
No. We connected to ContextLayer without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the ContextLayer MCP server still maintained?
ContextLayer is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.