Skip to content

1.0 tools: shared foundations (identifier, project, since, filters, errors, aliases) #1829

Closed

Description

@phernandez

Part of #1827.

Shared pieces every 1.0 tool uses. Lands first in the stack.

  • NoteIdentifier: a real type (today identifier is a plain str) with one resolver for path, permalink, memory:// URL, exact title, external id and <project>/path. No fuzzy fallback; a miss is a tool error that points to bm_search.
  • One project parameter accepting a name, workspace/project or an id. project_id and workspace are hidden aliases. A <project>/path prefix must agree with project. An explicit project is never re-resolved from the identifier (build_context resolves the first URL segment as a project even when project is passed #1814).
  • since / until: one parser for durations, natural language, dates and RFC 3339 instants. Keep the one-day floor and document it everywhere (recent_activity: document the one-day minimum lookback #1816).
  • JSON filters: one parser for bm_find and bm_search ($in, $gte, $exists, dot paths).
  • Paging: page / page_size, default 10, maximum 100.
  • Errors: every refusal is a tool error (isError) with a JSON error code and text that says what to try instead (MCP tools report refusals inconsistently (isError false for read_content/read_note/move_note refusals) #1813).
  • Middleware that maps old tool names to the new tools for one release, for direct callers. Hidden tools are refused on call by FastMCP, so this cannot be done with visibility.
  • Hidden parameter aliases: file_path → identifier; old_string / new_string / replace_all on bm_edit.

Activity

  1. added this to the v1.0 milestone on Oct 23, 2026
  2. claude commented on Oct 23, 2026

    @claude
    Contributor

    Claude finished @phernandez's task in 14s —— View job


    Triage

    • Type: Enhancement (applied the enhancement label)
    • Component: MCP tools. It has no repo label, and it isn't Cloud-specific, so the Cloud component is none.
    • Priority: Medium. The other 1.0 tools issues depend on this one, and it "lands first in the stack".
    • Complexity: Complex. It adds several shared pieces:
      • the NoteIdentifier type and resolver
      • unified project handling
      • the since/until parser
      • the JSON filters parser
      • paging
      • error codes
      • old-name alias middleware
      • hidden parameter aliases

    Duplicates: None found. This is part of the #1827 stack, together with #1828, #1830, #1831, #1832, #1833 and #1834.

    Notes for whoever implements it:

    I stopped after triage and did not start any implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions