# Agent tools — The Deep Days

In-page WebMCP tools exposed via `document.modelContext` on every page. Tools exist only while a tab is open; they read public page data, hold no accounts, and perform no payments. Crawlers should use the markdown twins listed in llms.txt instead.

## get_channel_info

- Type: Answer · read-only
- Returns structured facts about the channel: name, premise, YouTube channel URL, contact email, signature sign-off, and the latest posts.
- Input: none
- Returns: JSON: {name, tagline, premise, youtube, email, signoff, latest_posts: [{title, slug, url, date, description}]}

## search_posts

- Type: Answer · read-only
- Searches blog posts by keyword over title and description (case-insensitive), newest first; an empty query matches every post. Paginated via limit/offset.
- Input: query (string ≤200, default "") · limit (integer 1–50, default 10) · offset (integer ≥0, default 0)
- Returns: JSON: {query, total, returned, offset, has_more, next_offset, posts: [{title, slug, url, date, description}]}

## get_post

- Type: Answer · read-only
- Fetches one post: metadata plus the full markdown source (frontmatter includes the cited sources). Unknown slugs return {error}, not a guess.
- Input: slug (string, required) — slug or /posts/<slug>/ URL from search_posts
- Returns: JSON: {slug, url, title, date, description, markdown} — or {error}

## get_post_sources

- Type: Answer · read-only
- Returns the cited sources (the receipts) of one post: each source's note and URL where one exists.
- Input: slug (string, required) — slug from search_posts
- Returns: JSON: {slug, title, sources: [{note, url}]} — or {error}

## open_youtube_channel

- Type: Action · navigation
- Navigates the current tab to the channel's YouTube page so the user can watch or subscribe. Reversible with Back; performs no purchase, login or subscription by itself.
- Input: none
- Returns: JSON: {status: "navigating", url}

## compose_contact_email

- Type: Action · draft only
- Opens the user's own email client with a pre-filled draft to the channel's contact address. Nothing is sent by the tool — the user reviews and sends or discards the draft.
- Input: subject (string 1–150, required) · body (string ≤1500, optional)
- Returns: JSON: {status: "mail_draft_opened", to, subject}

## get_current_post

- Type: Answer · read-only · post pages only
- On /posts/<slug>/ pages only: returns the post open in this tab — metadata plus the full markdown source.
- Input: none
- Returns: JSON: {slug, url, title, date, description, markdown} — or {error}

Post index: https://thedeepdays.com/agents/site.json · Tool surface last updated 2026-08-31
