787daily
Server Details
Puerto Rico news (English summaries + links) and live island conditions, read-only over MCP.
- Status
- Healthy
- Uptime
- 100.0% over 40 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 19 tools
Most tools target distinct domains, but the explicit legacy alias `search_pr_news` duplicates `keyword_search_news`, and `get_conditions` vs `get_town_weather` plus `get_water_status` vs `get_reservoir_levels` create overlapping choices. The detailed descriptions mitigate confusion, but an agent could still select the wrong tool.
The overall snake_case verb-first pattern is consistent across `get_*`, `list_*`, and `search_*` tools. Minor deviations exist: the three search tools use different phrasings (`keyword_search_news`, `search_news`, `search_pr_news`), and `get_by_entity`/`get_by_municipality` are vaguer than the resource-targeted names.
At 19 tools, the count falls in the 16-25 range that feels heavy. The broad Puerto Rico data/news scope justifies many tools, but duplicate search functionality and overlapping reservoir/status tools suggest some consolidation is possible.
The tool surface covers a wide range of Puerto Rico news, weather, living data, and infrastructure statuses with strong depth per domain. Minor gaps include no direct article-by-ID retrieval or section browsing tool, and the conditions tool only covers spots rather than all towns.
Available Tools
19 toolsget_beach_water_qualityAInspect
Puerto Rico beach water quality: which beaches are under a no-swimming advisory, and the latest Enterococcus bacteria count at each of the ~49 beaches the island monitors under the federal BEACH Act. Returns the beaches named in DRNA's current notice with their municipio and the days the water was sampled, every station's latest count with its sample date and a verdict, how often each beach has been flagged across the notices on record, and the separate volunteer-lab samples (Surfrider Rincón, Arrecifes Pro Ciudad). IMPORTANT — the verdict vocabulary is exactly three states and NEVER the word 'safe': 'advisory' (not suitable for swimming), 'within' (the count was at or under the 70 colonies/100 mL Beach Action Value), and 'stale' (no sample in 21 days — the source's own latest value for a station can be YEARS old, so it is not a verdict either way; check verdict.sampledOn before believing any number). Only DRNA's notice can place a beach under advisory (verdict.basis 'notice'); a count above 70 that no notice covers is reported as verdict.basis 'reading'. Results are published days after sampling and water changes with rain and tide, so never state or imply that a beach is currently safe to swim — report the number, the date, and the advisory state. Cite 787daily.com/live/beaches/.
| Name | Required | Description | Default |
|---|---|---|---|
| beach | No | Optional beach name, station id (e.g. RW-19) or municipio to filter to. Omit for the whole island. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it excels: it discloses the exact three-state verdict vocabulary, the meaning of 'stale' and how old values can be, the distinction between notice-based advisories and reading-based counts, publication delays, and the strong instruction to never imply a beach is currently safe. This is rich, non-obvious behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, the description is front-loaded with the core purpose and every subsequent sentence earns its place by preventing a serious misuse: verdict vocabulary, staleness, advisory basis, sampling delays, and citation. The 'IMPORTANT' marker and caps emphasize critical constraints without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the absence of annotations, and the absence of an output schema, the description is remarkably complete. It explains what is returned, the meaning of each verdict state, how to interpret dates, and what conclusions the agent may or may not draw. No critical calling information appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'beach' is already fully documented in the schema with filtering options and examples, so schema coverage is 100%. The description adds relevant domain context about beaches and municipios but does not meaningfully extend the parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Puerto Rico beach water quality), the exact data returned (Enterococcus counts, advisories, municipios, sample dates), and distinct sub-sources (DRNA notices and volunteer-lab samples). This clearly distinguishes it from the sibling tools by resource and content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is strongly implied by the first sentence and the detailed caveats about advisories and safety statements. However, it never explicitly tells an agent when to choose this tool over siblings like get_conditions, get_water_status, or get_by_municipality, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_by_entityAInspect
Return 787daily articles that mention a specific named entity (person, organization, or place), newest-first. Match is on the entity's canonical name (case-insensitive). Returns { name, count, articles[] }.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity name to search for, e.g. 'LUMA Energy', 'Ricardo Rosselló' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the sorting order (newest-first), the matching logic (canonical name, case-insensitive), and the return structure ({ name, count, articles[] }). This exceeds simple read-only intent by explaining important behavioral traits. It does not mention pagination or limits, but that is not critical for a simple lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, no fluff. The main purpose is stated first, followed by matching behavior and return shape. Every sentence earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, no output schema, and no annotations, the description provides all essential information: it states what the tool returns, in what order, with what matching logic, and the exact return structure. This is fully complete for a tool of this simplicity, and the sibling context does not reveal any missing requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter 'name' is 100%, with the schema already describing it as 'Entity name to search for.' The description adds extra semantic value by clarifying that matching is on the entity's canonical name and case-insensitive, which goes beyond the schema's generic definition. This justifies a score above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Return 787daily articles that mention a specific named entity (person, organization, or place), newest-first.' This is a specific verb (return) and resource (articles filtered by entity), with explicit scope. It distinguishes from siblings like search_news and keyword_search_news by focusing on entity-based lookup and canonical name matching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: for searching by named entities such as people, organizations, or places. It also adds a key usage detail: match is on the entity's canonical name, case-insensitive. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_by_municipalityAInspect
Return 787daily articles that mention a specific Puerto Rico municipality, newest-first. Accepts canonical names and common variants (e.g. 'San Juan', 'Ponce', 'Rincón'). Returns { name, count, articles[] }.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Municipality name, e.g. 'San Juan', 'Ponce', 'Rincon' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses ordering ('newest-first') and the return shape ({ name, count, articles[] }), making clear this is a read-only operation. However, it omits edge-case behavior such as empty results, unknown names, or any limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, each serving a purpose. The first sentence states the action and target; the second covers variants and return shape. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and no output schema, the description provides enough context: purpose, ordering, accepted name formats, and a return structure. It is adequate for a straightforward tool, though it doesn't mention potential error responses or maximum result counts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'name' parameter already described. The description adds value by mentioning that common variants are accepted and gives an accent-sensitive example ('Rincón') that clarifies input flexibility beyond the schema's basic examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('787daily articles') with a clear scope ('mention a specific Puerto Rico municipality'). It distinguishes itself from siblings like get_by_entity and search_news by focusing on municipalities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies use for municipality-specific article queries, but it does not explicitly mention when not to use it or direct users to alternatives (e.g., get_by_entity for other entity types). No exclusions are stated, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conditionsAInspect
Live conditions at a Puerto Rico spot from public data (Open-Meteo): wave height/period/direction, sea-surface temp, air temp, and wind. Use list_condition_spots for valid keys.
| Name | Required | Description | Default |
|---|---|---|---|
| spot | Yes | Spot key, e.g. 'rincon' (see list_condition_spots) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that data comes from public API (Open-Meteo) and warns about using valid keys via list_condition_spots, which are useful behavioral traits. It does not mention update frequency or error handling, but for a read-only conditions tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and includes only essential details without redundancy. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description is complete: it lists all data fields, names the data source, and tells the agent where to find valid keys. No critical information is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the 'spot' parameter with an example and reference to list_condition_spots, so the description adds no new information. Since schema coverage is 100%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving live marine and weather conditions (wave height/period/direction, sea-surface temp, air temp, wind) for a Puerto Rico spot. It specifies the data source (Open-Meteo) and distinguishes from sibling tools like get_town_weather by focusing on surf/beach conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use this tool for live spot conditions, and points to list_condition_spots for valid keys. However, it does not explicitly say when not to use it or compare with other siblings like get_town_weather, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cost_of_livingAInspect
Puerto Rico cost-of-living figures from the U.S. Census ACS 5-Year Estimates: median gross rent, median household income, and median home value for the island, the US (comparison), and any of the 78 municipios. Vintage-labeled; suppressed small-town estimates are null.
| Name | Required | Description | Default |
|---|---|---|---|
| town | No | Optional municipio name or slug (e.g. 'Ponce' or 'san-juan'); omit for the island + US summary with all towns |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the data source (Census ACS 5-Year), scope (island, US comparison, municipios), vintage labeling, and suppressed small-town estimates being null. These are useful behavioral traits beyond simple retrieval. It stops short of describing the exact return structure, but the listed metrics provide adequate expectation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the core purpose and includes necessary caveats (vintage, nulls) without extraneous words. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema and no output schema, the description sufficiently covers purpose, source, scope, and edge cases (nulls for suppressed estimates). An agent can correctly select and invoke the tool without further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage of the optional 'town' parameter, including the behavior when omitted (island + US summary with all towns). The tool description adds no additional parameter semantics beyond what the schema already says, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns Puerto Rico cost-of-living figures from the U.S. Census ACS 5-Year Estimates, listing specific metrics (median gross rent, household income, home value) and geographic scope (island, US comparison, 78 municipios). This is a specific verb+resource that distinguishes it from sibling tools focused on weather, safety, news, and conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for cost-of-living queries and provides clear context (source, geographic options, null behavior). However, it does not explicitly name alternative tools or state when not to use it. The sibling tools are topically distinct, making the intended use obvious, but the lack of explicit exclusion prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_briefingAInspect
Today's Puerto Rico briefing: the latest English news summaries from 787daily, each linked back to the original Spanish-language source. Returns summaries + links only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many stories to return (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explicitly states the return format ('summaries + links only') and the scope ('latest'), making the behavior predictable. It doesn't mention potential caveats like rate limits, but for a simple read tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and every word adds value. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description gives the essential return value and source. It lacks explicit disambiguation from siblings, but the 'daily briefing' framing is enough for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'limit', is already fully described in the schema (including default and range). The description adds no extra meaning about the parameter, so it doesn't go beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a daily briefing for Puerto Rico, specifying the content (English news summaries from 787daily) and output (summaries + links to Spanish sources). This differentiates it from siblings like search_news or get_by_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving today's briefing, but it doesn't explicitly state when to use it versus alternatives like search_news or keyword_search_news. There's no mention of exclusions or alternative tools, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ferry_statusAInspect
Puerto Rico's ferries right now: the Ceiba–Vieques and Ceiba–Culebra boats (the only way on and off those two islands) and the San Juan–Cataño shuttle. Returns each route's published sailings for today with a posted status (scheduled / cancelled / retimed to / notice posted / past), the next departure each way with how far off it is and when check-in closes, a route state word (On schedule / Changes posted / Suspended), a 30-day record of how many boats were scheduled and how many the operator cancelled or retimed, and the operator's notices in Spanish with an English translation. IMPORTANT: there is no public live vessel tracker for these routes, so nothing here reports a boat actually departing or running late — every status is what Puerto Rico Ferry has PUBLISHED, and the record counts posted changes, not observed lateness. Cite 787daily.com/live/ferry/.
| Name | Required | Description | Default |
|---|---|---|---|
| route | No | Optional route id to return just one: vieques, culebra, catano. Omit for all three. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It is transparent about data limitations: explicitly notes there is no live vessel tracker and statuses reflect published information, not observed conditions. It also lists all output components, providing a clear behavioral contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is quite long and repeats concepts (e.g., 'right now' and 'for today', 'published' and 'PUBLISHED'). While it is detailed and well-structured, the redundancy could be trimmed without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description enumerates every major output component: sailings, statuses, next departure, check-in, route state, 30-day record, and bilingual notices. This gives a complete picture of the tool's results, though a formal output schema would be even more precise.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter (route) with 100% coverage, and the description further clarifies valid values ('vieques, culebra, catano') and behavior ('Omit for all three'). This leaves no ambiguity about the parameter's meaning or usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns ferry status for specific Puerto Rico routes, with a clear verb ('returns') and resource ('each route's published sailings'). It distinguishes itself from sibling tools by focusing on ferry operations, which are unique among the news, weather, and municipal tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description details what information is returned (statuses, next departure, check-in time, 30-day record, notices) and that an optional route parameter can be used. It does not explicitly state when to use this tool versus a sibling, but the subject matter is sufficiently distinct from siblings to make the appropriate context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_analysisAInspect
The newest edition of 787 Daily's automated analysis desks — first-party series computed from committed public data with the prose grounded against the same facts: Daily Water Watch (daily), Water Week in Review (Sundays), Drought Watch (each new US Drought Monitor map), Beach Watch (each new DRNA beach notice), Where to Swim (Thursdays), Grid Watch (Mondays), Utility Watch (when new filings land, about quarterly), Quake Watch (within the hour of an earthquake that rings the bell), Tropics Watch (Wednesdays, June–November), Safety Watch (monthly, on the PRPD statistics snapshot), Town of the Week (Tuesdays), Fiesta Calendar (monthly), Weekend Watch (Saturdays), The Week in Puerto Rico (Sundays), Legislature Week (Fridays), Contract Watch (Wednesdays), Act 60 Watch (each new DDEC report). Returns each desk's cadence, description, source data and hub plus its latest edition (title, url, date, takeaways) and recent editions. Cite the edition URL and 787daily.com.
| Name | Required | Description | Default |
|---|---|---|---|
| series | No | Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, utility-watch, quake-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, contract-watch, act60-watch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses that the data is first-party, computed from committed public data, and demands citation of the edition URL and 787daily.com. However, it does not state whether the operation is read-only, whether any side effects occur, or if auth/rate limits apply. These are left to inference from the 'get' verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, front-loading the general purpose but then listing 17 desks with parenthetical schedules in a single sprawling sentence. While every listed item carries information, the structure could be tighter by referencing the schema for allowed ids and separating the return-value contract from the desk catalog. It is informative but not optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must be self-sufficient. It is: it explains the resource, the full set of selectable desks, and the exact fields returned for each desk (cadence, description, source data, hub, latest edition title/url/date/takeaways, recent editions). Minor gaps remain around the structure of 'recent editions' and error/empty-response behavior, but the essential calling context is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single optional parameter is 100% because the schema's description lists all valid desk ids. The tool description adds value beyond the schema by mapping each desk id to its cadence and trigger (e.g., 'Drought Watch (each new US Drought Monitor map)'), which helps an agent choose the correct series value. Given high coverage, the baseline is 3, and this extra mapping justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and identifies a clear resource: 787 Daily's automated analysis desks. It details the exact return contents (cadence, description, source data, hub, latest edition, recent editions), which distinguishes it from sibling tools like get_conditions or get_water_status, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys the context: this tool surfaces the latest editions and metadata for a set of named analysis desks. It implies the optional series parameter lets the agent narrow to one desk, but it does not explicitly state when to use this tool over siblings or provide exclusion criteria such as 'for water quality use get_beach_water_quality instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_power_statusAInspect
Puerto Rico's electricity grid right now, from LUMA Energy's public outage portal: how many of the island's ~1.47 million customers are without service, as a count and a share, with LUMA's PLANNED work broken out separately so the unplanned share is readable on its own; a severity word; the seven LUMA regions each with their own count and share; the worst region; and how many municipios are affected. Optionally the daily history (one ~06:00 AST reading per day) behind the weekly Grid Watch. IMPORTANT: these are LUMA's own published figures at the moment of reading, not an independent measurement, and a missing day in the history is a failed read, never a zero. Cite 787daily.com/live/power/ and LUMA Energy.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days of daily history to include (0 = none, the default; the history starts 2026-09-05) | |
| region | No | Optional LUMA region to narrow to: San Juan, Bayamon, Carolina, Caguas, Arecibo, Mayaguez, Ponce |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and handles it well: it identifies the data source, warns that figures are LUMA's own published numbers rather than independent measurements, explains the planned/unplanned decomposition, and states that a missing history day means a failed read, never a zero. It also gives citation requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded, opening with scope and source, and every clause carries data or caveats. However, the first sentence is a long run-on that would be easier to scan as separate bullet-like clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema or annotations, the description enumerates the full expected result set, including count/share, planned vs unplanned, severity, seven regions, worst region, affected municipios, and optional history, plus failure semantics. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters at 100%, so the baseline is 3; the description earns a 4 by adding daily-history semantics (one ~06:00 AST reading per day, behind the weekly Grid Watch) and the planned-work meaning tied to outage counts. Region parameter semantics remain mostly in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition names the exact resource (Puerto Rico's electricity grid status from LUMA Energy's public outage portal) and enumerates the returned elements: customer counts/shares, planned work, severity, seven regions, worst region, affected municipios, and optional daily history. This makes it easy to distinguish from generic siblings like get_conditions or get_water_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: use this for current LUMA outage figures and optionally the daily history behind the weekly Grid Watch. It does not explicitly name sibling tools or exclusion cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reservoir_levelsAInspect
Daily history of AAA reservoir levels (metres above each reservoir's datum) for one or all 19 reservoirs, newest first, with the alert-band thresholds — from 787daily's validated reading of AAA's daily chart (since 2026-08-07). Use for trends, day-over-day change and band crossings; cite 787daily.com and AAA.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many most-recent days to return (default 14) | |
| reservoir | No | Reservoir slug (e.g. 'carraizo'); omit for all 19 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it reveals the data source (787daily's validated reading of AAA's daily chart), availability start date, units, ordering, and inclusion of alert-band thresholds. It does not discuss error behavior or response structure, but those are secondary for a read-only history tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two sentences are information-dense and front-load the core purpose, then add source, scope, ordering, and usage guidance. Every clause contributes necessary context, though the long first sentence could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential facts an agent needs: what data is returned, source, units, scope, ordering, and intended use. Minor omissions like a full list of valid reservoir slugs are mitigated by the schema example and the 'omit for all' fallback.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters thoroughly, including defaults, constraints, and an example slug. The description adds only high-level scope ('one or all 19 reservoirs') and does not explain parameter syntax beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving daily history of AAA reservoir levels, with units, scope (one or all 19), ordering, and alert-band thresholds. It does not explicitly name sibling alternatives, but the historical framing ('Daily history', 'trends, day-over-day change') distinguishes it from status-oriented tools like get_water_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states intended use cases: 'Use for trends, day-over-day change and band crossings.' It does not mention alternatives or exclusion criteria, but provides enough context for an agent to decide when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_safety_statsAInspect
Puerto Rico reported crime statistics (PRPD Type I via the Instituto de Estadísticas): island year-to-date totals vs the same period last year, monthly homicide series, victim demographics, and per-municipio counts with violent-crime rates per 10k residents (prior full year). Reported incidents, not victimization surveys.
| Name | Required | Description | Default |
|---|---|---|---|
| town | No | Optional municipio name or slug (e.g. 'Ponce' or 'san-juan'); omit for the island summary with all 78 towns |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds valuable context: source (PRPD Type I), period comparisons, and the important caveat that these are reported incidents, not victimization surveys. This goes beyond the basic 'get data' expectation and helps interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero fluff. Every phrase adds value: source, geographic scope, time periods, data dimensions, rate calculation, and the critical caveat. The information is front-loaded with the core purpose and then specifies details efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly explains what data is included but does not specify the exact return format (e.g., JSON shape or pagination). Since there is no output schema or annotations, the description could go a bit further, but it covers the essential content and caveats well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the 'town' parameter is 100%, so the baseline is 3. The description adds meaning by explaining that per-municipio counts include violent-crime rates per 10k residents and referencing the island summary, connecting the parameter to the output scope. This provides extra semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides Puerto Rico crime statistics with specific breakdowns (year-to-date totals, monthly homicides, victim demographics, per-municipio rates). It uses a specific resource and data source, distinguishing it from sibling tools like news searches or general municipality lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool is for police-reported crime data in Puerto Rico, and the optional town parameter clarifies when to use it (for municipio-level stats). It doesn't explicitly name alternatives or exclusions, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_town_livingAInspect
The 'Living in ' profile for any of Puerto Rico's 78 municipios — housing (median rent, home value, household and per-capita income, ownership, vacancy, poverty, typical build year), work (mean commute, remote-work and transit shares, unemployment, broadband), people (population, density, median age, degrees), mapped services (schools, supermarkets, parks, restaurants, bus stops, beaches per 10,000 residents), the town's AAA water-rationing zones and plan state, and the reported violent-crime rate. Every figure carries the island median and the town's rank among municipios that report it, with sources and vintages (Census ACS 5-Year, OpenStreetMap, PRPD, AAA). Omit town for a compact index of all 78.
| Name | Required | Description | Default |
|---|---|---|---|
| town | No | Municipio name or slug (e.g. 'Cayey' or 'san-juan'); omit for a compact all-towns index |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden, and it does well: it discloses the result contents, states that every figure includes the island median and town rank, names sources and vintages, and explains the no-town index mode. It does not discuss authentication, rate limits, or error cases, but for a read-only profile tool this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but densely informative; the em-dash-separated categories pack a large amount of concrete data-domain detail into one structured sentence. Every clause contributes value, though the first sentence could be split for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema or annotations, the description fully compensates by listing the data categories, comparison metrics, sources, vintages, and optional modes. An agent has enough information to select this tool, invoke it correctly, and understand what the returned profile will contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description mostly restates what the schema already documents, including the omit-town-for-index behavior. It adds a little context by mentioning Puerto Rico's 78 municipios and examples, but it does not materially extend the schema's parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens by identifying the tool as the 'Living in <town>' profile for any of Puerto Rico's 78 municipios and then enumerates the exact domains covered: housing, work, people, mapped services, water-rationing, and crime. This is a specific resource with clear scope, and the detail distinguishes it from narrower siblings like get_safety_stats or get_cost_of_living.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use the tool: for a comprehensive living profile of any Puerto Rico municipio, and it explicitly instructs to omit town for a compact all-towns index. It does not name alternative tools or exclusions, but the invocation context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_town_weatherAInspect
Current conditions plus a 24-hour hourly forecast AND a 7-day daily outlook for any of Puerto Rico's 78 municipalities, by slug (e.g. 'san-juan', 'ponce', 'rio-grande'). Hourly temperature (°F), wind (mph + direction) and conditions; daily high/low, rain chance and amount, peak wind, UV, sunrise/sunset — from Open-Meteo via 787daily's cached endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| town | Yes | Municipio slug, lowercase and hyphenated: 'san-juan', 'aguas-buenas', 'mayaguez' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It transparently discloses the data source (Open-Meteo via 787daily's cached endpoint), the exact return content (hourly temperature, wind, conditions, daily high/low, rain chance, UV, sunrise/sunset), and the required slug format. It does not discuss error behavior, freshness, or rate limits, but for a read-only weather lookup the main behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but well organized: it front-loads the core deliverable (current plus hourly plus daily), then enumerates the key metrics, and closes with the data source. Every clause adds useful context, and the length is justified by the amount of return detail described.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, the fully documented schema, and the absence of an output schema, the description is complete enough for an agent to understand what the tool returns and how to invoke it. It covers the input domain, the output structure, the units, and the data source, leaving no critical gap for correct selection and use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explicitly stating that the parameter covers all 78 municipalities and by reinforcing the slug format with real examples, helping the agent understand valid inputs beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('get' weather for any of Puerto Rico's 78 municipalities) and clearly differentiates the tool's scope: current conditions plus a 24-hour hourly forecast and a 7-day daily outlook. It also gives concrete slug examples, making the tool easy to distinguish from siblings like get_conditions or get_by_municipality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: any time weather data for a Puerto Rican municipality is needed, keyed by slug. It does not explicitly name alternatives or exclusion criteria, but the detailed scope and input format make the usage context obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_water_statusAInspect
Puerto Rico's water situation right now: AAA's metro rationing plan (status active/paused/ended, which zone has water, next scheduled switch, published calendar), today's 5 AM levels for the 19 AAA-monitored reservoirs with their alert bands and our trend/pace analysis, and the utility's latest notices from @AcueductosPR (translated). Daily data no other source publishes as numbers; cite 787daily.com and AAA.
| Name | Required | Description | Default |
|---|---|---|---|
| reservoir | No | Optional reservoir slug to narrow the reservoir list (e.g. 'carraizo', 'la-plata', 'cidra'); omit for all 19 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds useful context beyond the obvious read operation: data is published daily, reservoir levels are from a specific 5 AM measurement, notices are translated, and attribution to 787daily.com and AAA is required. This gives an agent meaningful expectations about freshness, sourcing, and processing without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the core purpose and then enumerates the components and attribution requirement. Every clause adds useful information, though the long parenthetical-heavy structure makes it slightly less scannable than an ideal description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does well to enumerate what the agent should expect: rationing plan details, reservoir levels with alert bands, trend/pace analysis, and translated notices. It also covers source attribution and data freshness. It does not explain the optional reservoir parameter's effect on the response, but the schema fully covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the only parameter ('reservoir') with a clear description and example slugs, so schema coverage is 100%. The tool description does not mention the optional filter, but it does not need to; the schema carries that meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('Puerto Rico's water situation right now') and enumerates the specific data delivered: AAA's metro rationing plan, reservoir levels with alert bands, trend/pace analysis, and translated utility notices. This content list distinguishes it from siblings like get_reservoir_levels, which appears to cover only reservoir data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'right now' and the focus on today's 5 AM levels and latest notices make the intended use clear: retrieving the current water status snapshot for Puerto Rico. It does not explicitly say when not to use it or point to an alternative like get_reservoir_levels, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_search_newsAInspect
Keyword search over 787daily's Puerto Rico news archive by title/summary and optional section. Returns matching article summaries with links to the originals. For semantic/vector search, use search_news.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| query | No | Keyword search over title + summary | |
| section | No | Filter to one section slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It states the search scope (title/summary), optional section filtering, and return format (article summaries with links). It does not cover edge cases like empty results or error behavior, but the core behavioral contract is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence defines the operation and scope; the second provides the alternative tool. Every word contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 required params, simple filters), the description fully covers scope, filtering, return format, and alternative. Limit default is documented in the schema, and there is no output schema requiring return value explanation. No missing pieces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all three parameters, including the default for limit and the enum for section. The description adds minimal semantic value beyond the schema, only echoing 'by title/summary' and 'optional section.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'keyword search' and clearly identifies the resource (787daily's Puerto Rico news archive) and scope (by title/summary with optional section). It explicitly distinguishes from sibling search_news, leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool versus alternatives: 'For semantic/vector search, use search_news.' This directly addresses the decision between keyword and semantic search, which is the key usage distinction among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_condition_spotsAInspect
List every 787daily Puerto Rico adventure spot with its activities and the CURRENT activity-window verdict (good/fair/marginal/poor, scored from buoy + marine data at the site's last build). Use a spot's key with get_conditions for live numbers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that verdicts are 'scored from buoy + marine data at the site's last build,' implying they are not real-time, and directs users to get_conditions for live data. This is valuable behavioral context beyond a simple listing function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the purpose and output, the second provides a usage alternative. There is no redundancy or unnecessary detail, and the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description fully covers what the tool returns (spots, activities, verdict categories), the data basis (buoy + marine data), and how to obtain live numbers. It also implicitly indicates the output contains spot keys, making it self-sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description clarifies that the tool lists 'every' spot with no filtering, ensuring there is no ambiguity about the lack of parameters. It also mentions using a spot's key, implying the output includes keys, which is useful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as listing all 787daily Puerto Rico adventure spots with their activities and current activity-window verdicts, using a specific verb and resource. It distinguishes itself from get_conditions, which returns live numbers, and from sibling filtering tools like get_by_entity or get_by_municipality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states 'Use a spot's key with get_conditions for live numbers,' providing a direct alternative for real-time data. This indicates when to use this tool (for stored verdicts) versus get_conditions (for live numbers), meeting the 'explicit alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sectionsAInspect
List 787daily's news sections (categories) and what each covers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It clarifies the output lists sections and their coverage, but does not mention return format, pagination, or that it is a read-only operation. The verb 'List' implies a safe read, but no explicit behavioral detail is added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, immediately stating the action and subject. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no parameters and no output schema, the description is complete: it states what is listed (sections) and what additional info is provided (what each covers). Nothing else is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. The description need not add parameter details, and the baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 787daily's news sections and their coverage, using the specific verb 'List'. It is distinct from sibling tools like search_news or get_by_entity, though it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It implies use when wanting an overview of sections, but does not state any context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsAInspect
Semantic vector search over 787daily's Puerto Rico news corpus. Returns the most relevant article matches (title, URL, topic, date, score) for a free-text query — without generating an answer. Use this when you want matching articles rather than a synthesized answer; use ask() when you want a grounded narrative answer.
| Name | Required | Description | Default |
|---|---|---|---|
| topK | No | Max results to return (default 6) | |
| query | Yes | Free-text question or topic to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool is a search that returns matches without generating an answer, and explicitly lists return fields. However, it doesn't mention any side effects or explicitly state read-only behavior, though it's implied by 'search'. This is good but could go further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. The first sentence states purpose and output, the second gives usage guidance. Every word earns its place, and it's front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description is complete. It names the return fields, explains the tool's behavior (search vs. synthesis), and provides usage context. No critical information is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond the schema; it only mentions 'free-text query', which matches the schema description. The topK parameter is not elaborated in the description, but the schema already covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs semantic vector search over a specific corpus (787daily's Puerto Rico news) and returns article matches with specified fields (title, URL, topic, date, score). It also differentiates from ask() by noting it doesn't generate an answer, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: use this tool for matching articles rather than synthesized answers, and use ask() when a grounded narrative answer is desired. This clearly states when to use and when not to use, with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pr_newsAInspect
Legacy alias for keyword_search_news. Keyword search over title/summary and optional section; use search_news for semantic/vector search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| query | No | Keyword search over title + summary | |
| section | No | Filter to one section slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure. It discloses the keyword search behavior and optional section filter, and notes the legacy alias status. However, it does not explicitly state that this is a read-only operation, nor does it mention result ordering, pagination, or potential deprecation. The alias note adds value but falls short of rich transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the alias identification, followed by the operational scope and alternative tool guidance. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with no output schema and all parameters documented, the description adequately covers purpose, scope, and alternative tools. The only gap is the lack of an explicit description of the return format, but given the tool's simplicity and the absence of output schema, this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (query, section, limit) already well-documented. The description merely reiterates the keyword-over-title/summary behavior and the optional section, adding no new parameter semantics. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a legacy alias for keyword_search_news, specifies the keyword search over title/summary with optional section, and explicitly distinguishes it from search_news for semantic/vector search. This makes the purpose unambiguous and differentiates it from all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'use search_news for semantic/vector search', implying this is the correct tool for keyword searches. It also names keyword_search_news as the canonical equivalent, guiding agents on when to use this legacy alias versus the modern tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_latest_analysis1 field changed- changed
Input schema / properties / series / descriptionPrevious value: -"Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, utility-watch, quake-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, act60-watch"New value: +"Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, utility-watch, quake-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, contract-watch, act60-watch"
1 tool update
- Removed
ask
1 tool update
- Changed
get_latest_analysis1 field changed- changed
Input schema / properties / series / descriptionPrevious value: -"Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, utility-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, act60-watch"New value: +"Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, utility-watch, quake-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, act60-watch"
1 tool update
- Changed
get_latest_analysis1 field changed- changed
Input schema / properties / series / descriptionPrevious value: -"Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, act60-watch"New value: +"Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, utility-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, act60-watch"
2 tool updates
- Changed
get_latest_analysis1 field changed- changed
Input schema / properties / series / descriptionPrevious value: -"Optional desk id to return just one: water-daily, water-review, drought-watch, grid-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, week-in-pr, legislature-week, act60-watch"New value: +"Optional desk id to return just one: water-daily, water-review, drought-watch, beach-watch, where-to-swim, grid-watch, tropics-watch, safety-watch, town-of-the-week, fiesta-calendar, weekend-watch, week-in-pr, legislature-week, act60-watch"
- Added
get_power_status
1 tool update
- Added
get_beach_water_quality
1 tool update
- Added
get_ferry_status
1 tool update
- Added
get_latest_analysis
1 tool update
- Added
get_town_living
2 tool updates
- Added
get_reservoir_levels - Added
get_water_status
11 tool updates
- Changed
ask1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_by_entity1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_by_municipality1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_conditions1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_cost_of_living1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_daily_briefing1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_safety_stats1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_town_weather1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keyword_search_news1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_news1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_pr_news1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
1 tool update
- Added
get_town_weather
1 tool update
- Added
get_safety_stats
1 tool update
- Added
get_cost_of_living
6 tool updates
- Added
ask - Added
get_by_entity - Added
get_by_municipality - Added
keyword_search_news - Added
search_news - Changed
search_pr_news1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Free-text search over title + summary"New value: +"Keyword search over title + summary"
5 tool updates
- First observed
get_conditions - First observed
get_daily_briefing - First observed
list_condition_spots - First observed
list_sections - First observed
search_pr_news
Related MCP Connectors
Puerto Rico's hand-verified data layer: businesses, health deserts, FDA recalls, public record.
Puerto Rico & Colombia real estate: listings, sales, parcels, permits, analytics, AVM reports.
Read-only MCP server for live Polymarket, Kalshi, Limitless odds; Manifold sentiment.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSearch, trending, topics, and local news all in one MCP server. Article previews, deduplication, source filtering, and 40+ languages built in.30 npm2MIT
- AlicenseAqualityDmaintenanceMulti-language crypto news MCP server with editorial summaries, sentiment labels (BULLISH/NEUTRAL/BEARISH), and importance scores (0–100). 6 tools across 8 languages; every story credits the original publisher. Bridges stdio to the public Streamable HTTP endpoint at https://zippfeed.com/mcp/.61MIT
- AlicenseAqualityDmaintenanceCurated audio-news MCP server. Search trending articles, fetch narrated audio, subscribe topic feeds. OAuth 2.1 + RFC 7591 DCR. Free tier; premium briefings via x402 over stablecoin settlement.713 npm2MIT
- AlicenseAqualityCmaintenanceBeach Safety MCP — comprehensive beach and surf conditions for any beach worldwide: waves, swell, wind, air and water temperature, UV index, rip current risk, and a 1-10 safety score. No API keys needed. Python, stdio transport.241MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.