# Topline Workspace MCP Tool Reference

> Generated from `HOSTED_HARNESS_MCP_TOOL_DEFINITIONS` for `/mcp/workspace`. Do not edit this file directly. Run `npm run docs:generate`.

Topline exposes these 19 hosted Topline Workspace MCP tools. A client only sees tools allowed by its connector token scopes and the user's current capabilities.

## `platform_connection_check`

Complete a one-time Developer Access verification challenge and prove that this authenticated MCP client can call the selected Topline product.

- MCP product: Build, Workspace
- Required OAuth scope: build: `harness:artifact:read`, workspace: `docs:read`
- Tool behavior: read-only: no; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "verificationCode": {
      "type": "string",
      "minLength": 16,
      "maxLength": 80,
      "description": "One-time code shown in Topline Developer Access."
    }
  },
  "required": [
    "verificationCode"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "verified": {
      "type": "boolean"
    },
    "product": {
      "type": "string",
      "enum": [
        "build",
        "workspace"
      ]
    },
    "verifiedAt": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "verified",
    "product",
    "verifiedAt"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `platform_search_documentation`

Search current Topline product guides, external API references, MCP tools, endpoint references, runbooks, and troubleshooting content.

- MCP product: Workspace
- Required OAuth scope: `docs:read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "section": {
      "type": "string",
      "description": "Optional exact documentation section filter."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10
    }
  },
  "required": [
    "query"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "docs": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "query",
    "docs"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.
- `scope_required:docs:read`: Reconnect and approve the docs:read scope.

### Examples

#### Search the Build MCP documentation

```json
{
  "input": {
    "query": "build mcp",
    "limit": 5
  },
  "output": {
    "query": "build mcp",
    "docs": []
  }
}
```

## `platform_read_documentation`

Read one complete Topline documentation entry by the id returned from platform_search_documentation.

- MCP product: Workspace
- Required OAuth scope: `docs:read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "doc": {
      "type": "object"
    }
  },
  "required": [
    "doc"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.
- `documentation_not_found`: Search documentation again and retry with an id returned by the current catalog.

### Examples

#### Read the hosted Build MCP tool reference

```json
{
  "input": {
    "id": "generated-build-mcp-tools"
  }
}
```

## `list_workspaces`

List workspaces the current Topline user can access in this tenant. Results are bounded, alphabetized, and cursor-paginated for use with conversation filters.

- MCP product: Workspace
- Required OAuth scope: `chat:read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional case-insensitive name or description filter."
    },
    "cursor": {
      "type": "string",
      "format": "uuid",
      "description": "Use nextCursor from the prior page with the same query."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 25
    }
  }
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "workspaces": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "workspaces",
    "nextCursor"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `search_conversations`

Find conversations the current Topline user can access in this tenant. Searches titles and recent visible-message previews; results are bounded and newest first.

- MCP product: Workspace
- Required OAuth scope: `chat:read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional case-insensitive title or recent-message text."
    },
    "projectId": {
      "type": "string",
      "format": "uuid",
      "description": "Optional workspace filter."
    },
    "status": {
      "type": "string",
      "enum": [
        "open",
        "archived",
        "all"
      ],
      "default": "open"
    },
    "cursor": {
      "type": "string",
      "format": "uuid",
      "description": "Use nextCursor from the prior page with the same filters."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10
    }
  }
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "conversations": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "conversations",
    "nextCursor"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `read_conversation`

Read a cursor-paginated page of visible messages from one accessible conversation. Returns workspace context, per-message truncation metadata, and no tool payloads or hidden runtime context.

- MCP product: Workspace
- Required OAuth scope: `chat:read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "conversationId": {
      "type": "string",
      "format": "uuid"
    },
    "beforeMessageId": {
      "type": "string",
      "format": "uuid",
      "description": "Return messages strictly older than this message id. Use nextBeforeMessageId from the prior page."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "conversationId"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "conversation": {
      "type": "object"
    },
    "messages": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "truncated": {
      "type": "boolean"
    },
    "nextBeforeMessageId": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "conversation",
    "messages",
    "truncated",
    "nextBeforeMessageId"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `search_conversation_messages`

Search user-visible text across an accessible conversation in bounded transcript windows. Results are newest first; use nextBeforeMessageId to continue into older history.

- MCP product: Workspace
- Required OAuth scope: `chat:read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "conversationId": {
      "type": "string",
      "format": "uuid"
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "role": {
      "type": "string",
      "enum": [
        "user",
        "assistant",
        "system"
      ]
    },
    "beforeMessageId": {
      "type": "string",
      "format": "uuid"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "conversationId",
    "query"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "nextBeforeMessageId": {
      "type": [
        "string",
        "null"
      ]
    },
    "searchedMessages": {
      "type": "integer"
    }
  },
  "required": [
    "query",
    "results",
    "nextBeforeMessageId",
    "searchedMessages"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `read_preferences`

Read the operator's explicit product-managed response preferences. These override inferred AgentCore memory.

- MCP product: Workspace
- Required OAuth scope: `memory:read`
- Required capability: `memory.read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    }
  }
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "preferences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string"
          },
          "body": {
            "type": "string"
          }
        },
        "required": [
          "topic",
          "body"
        ]
      }
    }
  },
  "required": [
    "preferences"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `memory.read`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `search_context`

Search permission-filtered Topline company context, including Graphiti-derived relationships with source citations.

- MCP product: Workspace
- Required OAuth scope: `memory:read`
- Required capability: `memory.read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10
    },
    "retrieval_mode": {
      "type": "string",
      "enum": [
        "hybrid",
        "lexical",
        "graph"
      ],
      "default": "hybrid"
    },
    "as_of": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "query"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "results"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `memory.read`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `fetch_context`

Fetch a cited Topline context item after applying current source and actor permissions.

- MCP product: Workspace
- Required OAuth scope: `memory:read`
- Required capability: `memory.read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "sourceType": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "title",
    "text",
    "url",
    "sourceType"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `memory.read`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `lookup_glossary`

Look up a company-specific glossary term or abbreviation before guessing what it means.

- MCP product: Workspace
- Required OAuth scope: `glossary:read`
- Required capability: `glossary.read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "minLength": 1
    },
    "scope_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    },
    "include_candidates": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "term"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "lookup": {
      "type": "object"
    }
  },
  "required": [
    "lookup"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `glossary.read`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `search_glossary`

Search company glossary entries by term, alias, definition, category, status, or scope.

- MCP product: Workspace
- Required OAuth scope: `glossary:read`
- Required capability: `glossary.read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "active",
        "candidate",
        "archived"
      ],
      "default": "active"
    },
    "category": {
      "type": "string"
    },
    "scope_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 25
    }
  }
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "entries": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "entries"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `glossary.read`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `resolve_glossary_terms`

Resolve exact glossary matches and likely unknown abbreviations from supplied text or candidate terms.

- MCP product: Workspace
- Required OAuth scope: `glossary:read`
- Required capability: `glossary.read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "candidates": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scope_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    },
    "include_candidates": {
      "type": "boolean",
      "default": false
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  }
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "recognized": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "ambiguous": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "unknown": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "recognized",
    "ambiguous",
    "unknown"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `glossary.read`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `create_glossary_term`

Publish a new company glossary term immediately when the operator explicitly asks for it.

- MCP product: Workspace
- Required OAuth scope: `glossary:write`
- Required capability: `glossary.approve.scope`
- Tool behavior: read-only: no; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "minLength": 1
    },
    "definition": {
      "type": "string",
      "minLength": 1
    },
    "aliases": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "category": {
      "type": "string"
    },
    "scope_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    }
  },
  "required": [
    "term",
    "definition"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "entry": {
      "type": "object"
    }
  },
  "required": [
    "ok",
    "entry"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `glossary.approve.scope`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `update_glossary_term`

Update an existing company glossary term by id when the operator explicitly requests the change.

- MCP product: Workspace
- Required OAuth scope: `glossary:write`
- Required capability: `glossary.approve.scope`
- Tool behavior: read-only: no; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "term": {
      "type": "string",
      "minLength": 1
    },
    "definition": {
      "type": "string",
      "minLength": 1
    },
    "aliases": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "category": {
      "type": "string"
    },
    "scope_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    }
  },
  "required": [
    "id"
  ],
  "anyOf": [
    {
      "required": [
        "term"
      ]
    },
    {
      "required": [
        "definition"
      ]
    },
    {
      "required": [
        "aliases"
      ]
    },
    {
      "required": [
        "category"
      ]
    },
    {
      "required": [
        "scope_id"
      ]
    }
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "entry": {
      "type": "object"
    }
  },
  "required": [
    "ok",
    "entry"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `glossary.approve.scope`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `propose_company_knowledge`

Propose cited company knowledge for review. This never auto-publishes and returns a proposal ID for status checks.

- MCP product: Workspace
- Required OAuth scope: `company_knowledge:propose`
- Required capability: `company_knowledge.propose`
- Tool behavior: read-only: no; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50000
    },
    "source_excerpt": {
      "type": "string",
      "maxLength": 4000
    },
    "citation_url": {
      "type": "string",
      "format": "uri",
      "pattern": "^https://"
    },
    "scope_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    }
  },
  "required": [
    "title",
    "body"
  ]
}
```

### Output schema

No output schema is currently declared by the runtime contract.

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `company_knowledge.propose`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `publish_company_knowledge`

Submit cited company knowledge for low-cost review and automatic publication only when confidence is high and no conflict or sensitivity is detected.

- MCP product: Workspace
- Required OAuth scope: `company_knowledge:write`
- Required capability: `company_knowledge.write`
- Tool behavior: read-only: no; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50000
    },
    "source_excerpt": {
      "type": "string",
      "maxLength": 4000
    },
    "citation_url": {
      "type": "string",
      "format": "uri",
      "pattern": "^https://"
    },
    "scope_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    }
  },
  "required": [
    "title",
    "body"
  ]
}
```

### Output schema

No output schema is currently declared by the runtime contract.

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `company_knowledge.write`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `company_knowledge_status`

Read the current review, confirmation, publication, or archive status of a company knowledge proposal.

- MCP product: Workspace
- Required OAuth scope: `memory:read`
- Required capability: `memory.read`
- Tool behavior: read-only: yes; destructive: no; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "proposalId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "proposalId"
  ]
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "proposal": {
      "type": "object"
    },
    "confirmationUrl": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "proposal",
    "confirmationUrl"
  ]
}
```

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `memory.read`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.

## `undo_company_knowledge`

Archive a published company knowledge item and remove it from retrieval and the company graph.

- MCP product: Workspace
- Required OAuth scope: `company_knowledge:write`
- Required capability: `company_knowledge.write`
- Tool behavior: read-only: no; destructive: yes; idempotent: not declared; open-world access: no

### Input schema

```json
{
  "type": "object",
  "properties": {
    "proposalId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "proposalId"
  ]
}
```

### Output schema

No output schema is currently declared by the runtime contract.

### Errors and recovery

- `scope_required`: reconnect or reauthorize the client with the required OAuth scope shown above.
- `capability_required`: ask a Topline administrator to grant `company_knowledge.write`; retrying without that capability will not succeed.
- `Invalid arguments`: correct the request so it matches the input schema before retrying.
- `mcp_tool_timeout`: inspect whether the operation completed, then retry only when the operation is safe to repeat.
