{"serverId":"mcp-registry/ai.duvera/gateway","tools":[{"name":"applehealth__heart_rate_read","fixed":{"name":"applehealth__heart_rate_read","description":"[applehealth · risk:medium] Read heart-rate data from Apple Health","inputSchema":{"type":"object","required":[],"properties":{"end":{"type":"string","description":"ISO-8601 end of the query window (defaults to now)"},"start":{"type":"string","description":"ISO-8601 start of the query window (defaults to today)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"applehealth__sleep_read","fixed":{"name":"applehealth__sleep_read","description":"[applehealth · risk:medium] Read sleep-analysis data from Apple Health","inputSchema":{"type":"object","required":[],"properties":{"end":{"type":"string","description":"ISO-8601 end of the query window (defaults to now)"},"start":{"type":"string","description":"ISO-8601 start of the query window (defaults to last night)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"applehealth__steps_read","fixed":{"name":"applehealth__steps_read","description":"[applehealth · risk:medium] Read step-count data from Apple Health","inputSchema":{"type":"object","required":[],"properties":{"end":{"type":"string","description":"ISO-8601 end of the query window (defaults to now)"},"start":{"type":"string","description":"ISO-8601 start of the query window (defaults to today)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"bluesky__trending_get","fixed":{"name":"bluesky__trending_get","description":"[bluesky · risk:low] Fetch the current trending topics on Bluesky. Returns topic names, display labels, and links to the topic feed. No account or API key required.\n","inputSchema":{"type":"object","required":[],"properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"chase__balance_check","fixed":{"name":"chase__balance_check","description":"[chase · risk:low] Read the current balance of a Chase account (read-only)","inputSchema":{"type":"object","required":[],"properties":{"account":{"type":"string","description":"The Chase account to check (defaults to primary)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"datadog__logs_view","fixed":{"name":"datadog__logs_view","description":"[datadog · risk:low] Search and read logs from Datadog over a time range","inputSchema":{"type":"object","required":["query"],"properties":{"to":{"type":"string","description":"End of the time range (ISO 8601 or relative)"},"from":{"type":"string","description":"Start of the time range (ISO 8601 or relative)"},"query":{"type":"string","description":"Datadog log search query"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"delta__boardingpass_show","fixed":{"name":"delta__boardingpass_show","description":"[delta · risk:low] Pull up the boarding pass for a Delta flight","inputSchema":{"type":"object","required":["confirmation_code"],"properties":{"passenger":{"type":"string","description":"Passenger last name"},"confirmation_code":{"type":"string","description":"Booking confirmation code"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":95,"tokensAfter":95},{"name":"duvera__dev_stackoverflow_search","fixed":{"name":"duvera__dev_stackoverflow_search","description":"[duvera · risk:low] Search Stack Overflow questions by keyword. Returns top 5 by relevance with title, link, score, and answer status. No account required.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search terms, e.g. \"goroutine leak detection\" or \"pandas merge on index\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"duvera__food_recipe_search","fixed":{"name":"duvera__food_recipe_search","description":"[duvera · risk:low] Search recipes by dish name (e.g. \"arrabiata\", \"pad thai\"). Returns ingredients, instructions, category, and cuisine. No account required.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Dish name to search for, e.g. \"carbonara\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"duvera__food_restaurant_search","fixed":{"name":"duvera__food_restaurant_search","description":"[duvera · risk:low] Search for restaurants and food places by name or location using OpenStreetMap. Read-only, no account required.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query, e.g. \"pizza in San Francisco\" or \"sushi near me\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"duvera__github_read_file","fixed":{"name":"duvera__github_read_file","description":"[duvera · risk:low] Read a file from a public GitHub repository. Read-only.","inputSchema":{"type":"object","required":["owner","repo"],"properties":{"path":{"type":"string","description":"File path within the repository, e.g. \"README.md\". Defaults to README.md."},"repo":{"type":"string","description":"Repository name, e.g. \"Hello-World\"."},"owner":{"type":"string","description":"Repository owner (username or org), e.g. \"octocat\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"duvera__github_search_repos","fixed":{"name":"duvera__github_search_repos","description":"[duvera · risk:low] Search public GitHub repositories by keyword. Returns top 5 results by stars. No auth required.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query (e.g. \"machine learning python\", \"react component library\")."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"duvera__news_search","fixed":{"name":"duvera__news_search","description":"[duvera · risk:low] Search Hacker News stories by keyword, ranked by relevance. Returns title, URL, points, author, and comment count. No account required.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search terms, e.g. \"model context protocol\" or \"postgres performance\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":108,"tokensAfter":108},{"name":"duvera__travel_flight_search","fixed":{"name":"duvera__travel_flight_search","description":"[duvera · risk:low] List aircraft currently airborne within a radius of a point (adsb.lol ADS-B data). Use geo.geocode to get a city's coordinates first. Returns callsign, altitude, speed, and position. No account required.","inputSchema":{"type":"object","required":["latitude","longitude","radius_nm"],"properties":{"latitude":{"type":"number","description":"Latitude of the search center (e.g. 40.64 for JFK)."},"longitude":{"type":"number","description":"Longitude of the search center (e.g. -73.78 for JFK)."},"radius_nm":{"type":"number","description":"Search radius in nautical miles (1-250), e.g. 50."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":186,"tokensAfter":186},{"name":"duvera__wiki_search","fixed":{"name":"duvera__wiki_search","description":"[duvera · risk:low] Search Wikipedia articles by keyword. Returns matching page titles, keys, and excerpts. Pass a result's key to wiki.summary for the article summary. No account required.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search terms, e.g. \"zero trust architecture\" or \"Ada Lovelace\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":115,"tokensAfter":115},{"name":"gmail__mail_read","fixed":{"name":"gmail__mail_read","description":"[gmail · risk:low] Read recent emails from the Gmail inbox","inputSchema":{"type":"object","required":[],"properties":{"label":{"type":"string","description":"Optional label/folder to read from (defaults to INBOX)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":73,"tokensAfter":73},{"name":"google_workspace__mail_search","fixed":{"name":"google_workspace__mail_search","description":"[google-workspace · risk:low] Search Mail via Gmail, governed by Duvera.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query, e.g. 'invoices from Acme last month'."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":81,"tokensAfter":81},{"name":"googlecalendar__availability_find","fixed":{"name":"googlecalendar__availability_find","description":"[googlecalendar · risk:low] Find open time slots within a date range in Google Calendar","inputSchema":{"type":"object","required":["start","end"],"properties":{"end":{"type":"string","description":"End of the search window in ISO 8601 format"},"start":{"type":"string","description":"Start of the search window in ISO 8601 format"},"duration_minutes":{"type":"number","description":"Desired slot length in minutes"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":133,"tokensAfter":133},{"name":"grubhub__order_track","fixed":{"name":"grubhub__order_track","description":"[grubhub · risk:low] Check the live status and ETA of a Grubhub order","inputSchema":{"type":"object","required":["order_id"],"properties":{"order_id":{"type":"string","description":"Identifier of the order to track"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"instacart__menu_search","fixed":{"name":"instacart__menu_search","description":"[instacart · risk:low] Search for grocery items and stores in the Instacart app","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search terms, e.g. \"organic bananas\""},"store":{"type":"string","description":"Store name or id to scope the search"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"microsoft365__calendar_list","fixed":{"name":"microsoft365__calendar_list","description":"[microsoft365 · risk:low] List Calendar via Outlook Calendar, governed by Duvera.","inputSchema":{"type":"object","required":[],"properties":{"range":{"type":"string","description":"Date range, e.g. 'this week'."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"microsoft365__mail_search","fixed":{"name":"microsoft365__mail_search","description":"[microsoft365 · risk:low] Search Mail via Outlook / Exchange, governed by Duvera.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query, e.g. 'invoices from Acme last month'."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"notion__notes_search","fixed":{"name":"notion__notes_search","description":"[notion · risk:low] Search pages and notes in Notion by query","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"obsidian__notes_search","fixed":{"name":"obsidian__notes_search","description":"[obsidian · risk:low] Search notes in an Obsidian vault by query","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":68,"tokensAfter":68},{"name":"postgres__sql_read","fixed":{"name":"postgres__sql_read","description":"[postgres · risk:low] Execute a read-only SQL query against a Postgres database","inputSchema":{"type":"object","required":["database","query"],"properties":{"query":{"type":"string","description":"Read-only SQL query (SELECT) to execute"},"database":{"type":"string","description":"Target database name"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"slack__message_search","fixed":{"name":"slack__message_search","description":"[slack · risk:low] Search recent messages across Slack channels","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":68,"tokensAfter":68},{"name":"southwest__flight_status","fixed":{"name":"southwest__flight_status","description":"[southwest · risk:low] Check the status of a Southwest flight","inputSchema":{"type":"object","required":["flight_number"],"properties":{"date":{"type":"string","description":"Flight date (YYYY-MM-DD)"},"flight_number":{"type":"string","description":"Flight number, e.g. WN1234"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":93,"tokensAfter":93},{"name":"telegram__message_read","fixed":{"name":"telegram__message_read","description":"[telegram · risk:low] Read recent messages from a Telegram chat","inputSchema":{"type":"object","required":["chat"],"properties":{"chat":{"type":"string","description":"Chat id or @username to read from"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":71,"tokensAfter":71},{"name":"twitter__tweets_search","fixed":{"name":"twitter__tweets_search","description":"[twitter · risk:low] Search for recent tweets matching a keyword, hashtag, or phrase using the Twitter v2 API. Pass your Twitter Bearer Token via X-Duvera-Service-Token header — Duvera never stores it. Get a free Bearer Token at developer.twitter.com.\n","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Twitter search query. Supports operators like \"from:user\", \"#hashtag\", \"-word\"."},"max_results":{"type":"number","description":"Number of tweets to return (10-100, default 10)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":166,"tokensAfter":166},{"name":"uber__fare_estimate","fixed":{"name":"uber__fare_estimate","description":"[uber · risk:low] Estimate the fare for a trip in the Uber app","inputSchema":{"type":"object","required":["destination"],"properties":{"pickup":{"type":"string","description":"Pickup address (defaults to current location)"},"product":{"type":"string","description":"Ride product, e.g. UberX, Comfort, Black"},"destination":{"type":"string","description":"Drop-off address or place name"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":122,"tokensAfter":122},{"name":"united__flight_status","fixed":{"name":"united__flight_status","description":"[united · risk:low] Check the status of a United flight","inputSchema":{"type":"object","required":["flight_number"],"properties":{"date":{"type":"string","description":"Flight date (YYYY-MM-DD)"},"flight_number":{"type":"string","description":"Flight number, e.g. UA123"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"venmo__payment_request","fixed":{"name":"venmo__payment_request","description":"[venmo · risk:low] Request a payment from a contact via Venmo (no money leaves your account)","inputSchema":{"type":"object","required":["recipient","amount_cents"],"properties":{"note":{"type":"string","description":"Optional note explaining the request"},"recipient":{"type":"string","description":"The Venmo handle, phone, or contact to request from"},"amount_cents":{"type":"number","description":"Amount being requested, in cents"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"wallet__boardingpass_show","fixed":{"name":"wallet__boardingpass_show","description":"[wallet · risk:low] Pull up a boarding pass stored in Apple Wallet","inputSchema":{"type":"object","required":[],"properties":{"pass_name":{"type":"string","description":"Name or description of the pass to display"},"flight_number":{"type":"string","description":"Flight number associated with the pass"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100}],"toolsChanged":33,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}