Skip to content

feat: add URL and link management tools #785

Description

@avoidwork

Summary

Add URL shortening, link preview/metadata extraction, and bookmark management tools.

Motivation

The existing webExtract tool fetches raw page content, but there is no dedicated URL management capability. Office and marketing workflows frequently need to: shorten URLs for sharing, extract link metadata (title, description, image) before posting, manage bookmarks/favorites, and validate link health. Currently the agent must fall back to shell commands (curl, wget) or rely on ad-hoc LLM reasoning, which is inconsistent.

Proposed Solution

Create URL management tools:

  • URL Shortening: Generate short URLs via services like Bitly, Rebrandly, or custom shorteners
  • Link Preview: Extract metadata (title, description, image, Open Graph tags) from a URL without fetching full content
  • Bookmark Management: Create, read, update, delete bookmarks with tags and notes
  • Link Validation: Check if URLs are reachable, return HTTP status codes, detect redirects
  • Link Analysis: Extract all links from a page, detect broken links, analyze link structure

Each tool should follow the existing tool pattern in src/tools/ — a zod schema, an impl function, and registration in index.js with appropriate permissions.

Alternatives Considered

  • Shell-based tools (curl, wget): fragile, no structured output, requires user-installed dependencies.
  • Rely on webExtract: overkill for metadata-only extraction, no shortening or bookmarking capability.

OpenSpec Note

This project uses OpenSpec for feature development. If this request is approved, I will:

  1. Run /opsx:propose to generate a full proposal with specs and tasks
  2. Iterate on the design before any code is written
  3. Follow the task-driven implementation workflow

Additional Context

This should integrate with the text processing gap (#784) — e.g., analyzing link metadata as part of SEO workflows. The existing webExtract tool handles full content extraction; these tools would provide lighter-weight URL operations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions