Food Web
Server Details
Find and query Food Data. The who, what, and where of food discovery. Use food web as a base level data layer to your Food Technology App
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Most tools are cleanly separated: forum_* reads, entity search/get, program search/get, and whoami each have a distinct target. The main overlap is search_programs (which accepts a date range) versus list_program_occurrences (which returns dated occurrences), plus list_cities overlapping with the region filters in search_entities; descriptions mitigate but don't eliminate the ambiguity.
Eight of ten tools use a clear verb_noun pattern (get_entity, get_program, list_cities, search_entities, search_programs, list_program_occurrences). The forum_* tools put the resource first (forum_get_discussion instead of get_forum_discussion), and whoami breaks the pattern entirely, but overall the conventions are readable and largely predictable.
Ten tools is well within the sweet spot for a search-and-read API surface. Each tool maps to a distinct resource or query mode with no filler entries.
Core read paths are covered (forum listing/thread retrieval, entity and program lookup, occurrence expansion, identity check), but the surface is entirely read-only with no forum participation or program/entity write operations. There is also no tool to enumerate the taxonomy, assets, categories or kinds that the search filters reference, leaving agents to guess valid filter values.
Available Tools
10 toolsforum_get_discussionRead a discussionBInspect
One forum discussion with its full message thread (messages + depth-1 replies). 404 when the thread does not exist or is not visible to your account.
| Name | Required | Description | Default |
|---|---|---|---|
| discussion_id | Yes | Discussion id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose two useful traits: the thread is truncated at depth-1 replies, and access failures surface as 404 for both nonexistent and invisible threads (conflating not-found and unauthorized). It does not state whether the call is read-only (only the title implies it), nor any message-count caps or pagination 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 sentences with zero waste: the return shape is front-loaded and the error behavior follows. Nothing is repeated from the schema or title.
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 one-parameter read tool with no output schema, the description supplies the shape of the return value and the failure semantics, which is most of what an agent needs. A note on read-only nature or how to obtain a valid discussion_id would close the remaining gap.
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?
There is a single required parameter, discussion_id, with 100% schema description coverage, so the schema already documents it. The description adds no format, source, or provenance detail for the ID (e.g. that it comes from forum_list_discussions), leaving the baseline of 3 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 states precisely what is returned: a single forum discussion plus its full message thread, explicitly scoped to messages and depth-1 replies. The singular 'One forum discussion' implicitly separates it from the sibling forum_list_discussions, though that sibling is never named, so an agent must infer the split from the noun phrase rather than from an explicit contrast.
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?
There is no explicit when-to-use guidance and no mention of alternatives such as forum_list_discussions for discovering a discussion_id before calling this. The depth-1 detail hints that the tool is for reading a complete thread, but that is inference rather than stated routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forum_list_categoriesList forum categoriesBInspect
Categories (channels) of the Food Web community forum, in display order.
| 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 full burden, and it does disclose one real behavioral trait: results come back 'in display order' rather than alphabetically or by id. It says nothing about scope (global vs. per-community), visibility/permissions, or pagination, which for an unpaginated zero-param list is a modest but real 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?
A single short sentence with the resource front-loaded and the ordering detail tacked on, with no filler. It is slightly under-specified for its brevity — a leading verb such as 'Lists' would cost one word and improve it.
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?
There is no output schema and no annotations, so the description is the only place an agent can learn what a returned category contains (id, name, slug?) and how it relates to the discussion tools. It covers ordering but omits the shape of the result and the downstream usage, leaving meaningful gaps for a discovery/list endpoint.
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 takes zero parameters, which sets the baseline at 4, but the description cannot add parameter meaning because there is none. The schema is empty, so nothing is lost; scoring just below baseline because the description does not clarify that no filters are accepted (e.g., no way to scope to a parent category).
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 phrase 'Categories (channels) of the Food Web community forum' names the specific resource and clarifies the synonym 'channels'. It implicitly distinguishes itself from the discussion-oriented siblings, but never states the action (list/retrieve), so it reads as a data label rather than a stated capability.
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?
There is no guidance on when to call this versus forum_list_discussions or forum_get_discussion, and no statement that category ids are the input to those tools. An agent must infer the call sequence from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forum_list_discussionsList forum discussionsAInspect
Discussions in the community forum, newest activity first (or top-scored). Optionally scoped to one category. Results are visibility-filtered for your account: anonymous callers see public threads only.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order (default recent) | |
| limit | No | Page size (default 20, max 50) | |
| cursor | No | Cursor from the previous page (nextCursor) | |
| category_id | No | Limit to one category (id from forum_list_categories) |
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 contribute real behavioral context: visibility filtering by account and public-only results for anonymous callers, plus default ordering. It says nothing about pagination behavior, page-size limits, or what a returned discussion contains, leaving notable gaps for an unannotated read 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?
Three short sentences, no filler, with ordering stated up front and the scoping caveat following. Every clause carries 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?
For a filtered list tool with no output schema and no annotations, the description covers ordering, scoping, and visibility. Pagination is handled by the schema's nextCursor wording, so what's missing is mainly the shape of a discussion record, which is a minor gap.
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%, so all four parameters are already documented, establishing a baseline of 3. The description adds mild value by glossing 'top' as 'top-scored' and framing category_id as a scope, but it says nothing about limit or cursor.
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 the resource (community forum discussions) and its ordering, which distinguishes it from the singular sibling forum_get_discussion. The verb 'list' is implied by the noun phrase rather than stated, but an agent can still tell what this returns.
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 mentions optional category scoping and that anonymous callers get public threads only, which implies context of use. However it never explicitly routes the agent between this and forum_get_discussion or forum_list_categories, so the when-to-use logic must be inferred from names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entityGet one entityAInspect
Fetch a single asset-map entity by id, including its place (address, coordinates) and links to Food Web apps (e.g. a bookable kitchen listing). Contact fields (email, phone) are only returned to authenticated callers — sign in or use an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does deliver real behavioral context: contact fields (email, phone) are conditionally redacted for unauthenticated callers, and the caller must sign in or supply an API key. It does not cover failure behavior for unknown ids or any rate/consistency characteristics.
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, each earning its place: the first defines the operation and its returned payload, the second flags the auth-dependent field visibility. Front-loaded with the core purpose and free of 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 single-parameter read tool with no output schema, the description adequately previews the response shape (place, coordinates, app links, contact fields) and the auth caveat. The only meaningful gap is what happens when the id is not found or the entity is inaccessible.
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?
There is a single required parameter with 100% schema description coverage (UUID format and pattern already documented in the schema). The description only reinforces that lookup is by id, adding nothing new about format or source of the value — baseline 3 applies.
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?
States a specific verb and resource ('Fetch a single asset-map entity by id') and enumerates the payload (place/coordinates, Food Web app links), which is far more than a restatement of the title. The singular, id-based scope implicitly separates it from the sibling search_entities, but no sibling is named outright.
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?
Usage is only implied: the 'by id' framing suggests it is the lookup path once a UUID is known, versus search_entities for discovery. There is no explicit when-to-use/when-not statement and no prerequisite guidance beyond the auth note about contact fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_programGet one programAInspect
One published (or cancelled) program by id or slug: description, organizer and venue, schedules with their labels, the next dates, links, and structured_data — the schema.org JSON-LD to embed verbatim (escape <). Contact email and phone are only returned to authenticated callers — sign in or use an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_slug | Yes | Program uuid or slug (e.g. "community-pantry-halifax") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the load and does it well: it discloses the returned payload shape, the `structured_data` JSON-LD with the `<` escaping requirement, and that contact email/phone are gated behind authentication or an API key. It stops short of saying what happens for invalid ids or unlisted programs, so a small gap remains.
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?
A single dense sentence that leads with the verb and resource, then enumerates returns and auth caveats in a sensible order. The `structured_data` escaping hint is worth its space, but the sentence runs long enough that the auth note 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?
With no output schema, the description steps in and names the returned fields (description, organizer, venue, schedules, next dates, links), plus the auth-gated fields. Only error/not-found behavior and how 'next dates' are computed are left unstated, which is a modest gap for a one-parameter read.
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 id_or_slug property already documents the uuid-or-slug format with an example. The description restates the id-or-slug duality and adds that cancelled programs are retrievable, which is minor added meaning rather than compensating for a gap.
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?
States a specific verb and resource with scope: fetch one program, published or cancelled, by id or slug. That scope cleanly separates it from siblings like search_programs and list_program_occurrences without either schema being opened.
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 'by id or slug' implies this is the single-record lookup once an identifier is known, which is usable context. However, it never names an alternative such as search_programs for discovery or states what to do when the identifier is unknown or the program is unpublished.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_citiesList mapped citiesAInspect
Distinct city names in a country + province that have at least one mapped, non-duplicate entity. Useful for narrowing a search region.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country — ISO 3166-1 code canonical (e.g. "CA"); "Canada" also accepted | |
| province | Yes | Province/state — ISO 3166-2 code canonical (e.g. "NS"); "Nova Scotia" also accepted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and discloses non-obvious semantics: results are distinct/de-duplicated and only include cities with at least one mapped, non-duplicate entity — a filtering rule an agent could not infer from the name. It does not state result ordering or whether an empty list is possible, which keeps it below a 5.
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 tight sentences with no redundancy; the filtering semantics are front-loaded and the usage hint follows. Every clause earns its place.
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 two-required-parameter read tool with fully documented schema and no output schema, the description covers the essentials. Minor gaps: no mention of result shape (list of names) or ordering, which an agent might want before composing a downstream search.
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% and both parameters are documented with ISO code formats and human-readable fallbacks. The description adds only the pairing constraint (country + province) already implied by the schema, so baseline 3 applies.
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?
States a specific verb (list) and resource (distinct city names) with a precise scope: a country + province, restricted to cities with at least one mapped, non-duplicate entity. It is clearly distinguishable from search_entities, though it never names the sibling it complements.
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?
"Useful for narrowing a search region" implies a use case (region discovery before a broader search) but gives no explicit when-to-use/when-not or names the alternative tool. The guidance is suggestive rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_program_occurrencesProgram calendarAInspect
Every dated occurrence of matching published programs in [from, to) — a range of at most 93 days — with its program, organizer and status (cancelled and rescheduled dates included unless include_cancelled is false). The same filters as search_programs. Paginated via cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free text over name, summary, organizer and tags | |
| to | Yes | ISO date or date-time; at most 93 days after `from` | |
| tz | No | Timezone for bare from/to dates (default America/Halifax) | |
| bbox | No | [minLng, minLat, maxLng, maxLat] | |
| city | No | City, case-insensitive | |
| from | Yes | ISO date or date-time (bare dates are midnight in `tz`) | |
| kind | No | program · event · volunteer · job | |
| near | No | A point; use with radius_km | |
| limit | No | Page size (default 100, max 500) | |
| cursor | No | Opaque cursor from the previous page (next_cursor) | |
| country | No | ISO 3166-1 code canonical (CA); any spelling matches | |
| province | No | ISO 3166-2 code canonical (NS); any spelling matches | |
| audiences | No | ||
| entity_id | No | Programs this entity organizes, hosts or partners on | |
| frequency | No | ||
| radius_km | No | Radius around `near` (default 10, max 200) | |
| saved_map | No | A public saved map (share token or id): programs of the organizations on it | |
| categories | No | ||
| cost_models | No | ||
| access_models | No | ||
| include_cancelled | No | Default true: cancelled dates are listed with their status |
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 disclose substantive behavior: only published programs are covered, cancelled and rescheduled dates are included by default with their status, the window is capped at 93 days, and results are cursor-paginated. It omits result ordering and any auth/permission expectations, but the operationally risky details (range cap, cancellation default) are stated.
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, front-loaded with what is returned before the constraints and pagination note. Every clause carries information an agent needs — nothing is restated from the schema verbatim without added meaning.
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 21-parameter query tool with no output schema and no annotations, the description covers scope, filter alignment, the range cap, cancellation handling, and pagination — enough to call it correctly. Ordering of returned occurrences and the concrete status values are left unstated, but these are secondary to 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?
Schema coverage is 76% across 21 parameters, so the baseline is 3; the description earns above that by delegating the full filter set to a named sibling ('The same filters as search_programs') and by explaining the include_cancelled semantics in terms of effect on results rather than repeating the default. The from/to window rule is restated with the 93-day limit, which is the constraint most likely to cause a failed call.
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 states a specific resource and scope: 'Every dated occurrence of matching published programs in [from, to)', plus the joined fields returned (program, organizer, status). That distinguishes it cleanly from search_programs, which returns program records rather than dated occurrences, without needing the schema.
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 signals the sibling relationship ('The same filters as search_programs') and states the hard operating constraint (range of at most 93 days, paginate via cursor), which tells an agent when this tool is viable. It stops short of an explicit 'use search_programs if you want program records, use this for calendar dates' routing rule, so there are no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entitiesSearch food-asset entitiesAInspect
Search the Food Web asset map: kitchen rentals, farms, farmers markets, food banks, restaurants and other food infrastructure, each joined to its mapped place (address + coordinates). Every entity carries its taxonomy v2 primary_type, types, assets, sector and bookable_assets. Filter by free text, taxonomy nodes, assets, bookability, region, or a bounding box. Paginated via cursor. Phone is returned only to signed-in callers. Operator email is returned only to curators and admins.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search over name, description, tags, types, and place text (city, address, postal code) | |
| bbox | No | Viewport filter: [minLng, minLat, maxLng, maxLat] (WGS84) | |
| city | No | City filter, case-insensitive (e.g. "Halifax") | |
| limit | No | Page size (default 25, max 100) | |
| types | No | Taxonomy v2 nodes to match, at any level, e.g. ["kitchen_rentals","farm","farmers_market"]. A sector or type expands to everything below it; an entity matches when it holds ANY of them, not only as its main type. "unclassified" matches entities with no main type. Old v1 slugs are translated. Unknown slugs are a validation error (see GET /v1/map/taxonomy for the tree). | |
| assets | No | Assets the place must have: kitchen, cold_storage, frozen_storage, dry_storage, dining_space, barn, farmland, greenhouse | |
| cursor | No | Opaque pagination cursor from a previous page (next_cursor) | |
| country | No | Country filter. Canonical is the ISO 3166-1 alpha-2 code (e.g. "CA"); any spelling matches — "CA" and "Canada" are equivalent | |
| bookable | No | true = any asset Bookable on Food Web right now; or the asset slugs that must be Bookable | |
| province | No | Province/state filter. Canonical is the ISO 3166-2 subdivision code (e.g. "NS"); any spelling matches — "NS" and "Nova Scotia" are equivalent | |
| postal_code | No | Exact postal code filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses field-level visibility rules ('Phone is returned only to signed-in callers. Operator email is returned only to curators and admins') and pagination via cursor. Search implies read-only, but it could be more explicit about that and about ordering or 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?
The description is dense and front-loaded: the search scope is stated first, then returned fields, then filters, then pagination, then visibility caveats. It is appropriately sized for an 11-parameter search tool, with no filler sentences.
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 11 parameters, no output schema, and no annotations, the description covers what is needed: entity categories, joined place data, returned taxonomy fields, filter dimensions, pagination, and access-based field visibility. It does not describe the response envelope or pagination metadata in detail, but the core return fields are stated.
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 schema already defines every parameter in detail. The description only restates the filter categories at a high level ('free text, taxonomy nodes, assets, bookability, region, or a bounding box') and adds no syntax or semantics beyond the schema, so baseline 3 applies.
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 states a specific verb and resource: 'Search the Food Web asset map', and lists the entity categories covered (kitchen rentals, farms, markets, etc.). It is clearly a filtered search over many entities, but it never explicitly contrasts itself with the single-entity sibling get_entity, so sibling differentiation is left implicit.
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?
Usage is implied by the filter list ('Filter by free text, taxonomy nodes, assets, bookability, region, or a bounding box'), but there is no explicit when-to-use guidance and no named alternative. An agent can infer that this is the search tool and get_entity is for single records, but the definition does not state that routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_programsSearch programs & eventsAInspect
Search published community food programs, events, volunteer roles and jobs (free food, markets, cooking classes, community meals, …) — the same filters as GET /v1/programs: text, organizer entity, saved map, area (bbox / near / country / province / city), kind, categories, audiences, access and cost models, recurring vs one-time, and an optional date range (programs with a date in [from, to)). Ordered by next date. Paginated via cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free text over name, summary, organizer and tags | |
| to | No | ISO date or date-time: has a date before this | |
| tz | No | Timezone for bare from/to dates (default America/Halifax) | |
| bbox | No | [minLng, minLat, maxLng, maxLat] | |
| city | No | City, case-insensitive | |
| from | No | ISO date or date-time: has a date on or after this | |
| kind | No | program · event · volunteer · job | |
| near | No | A point; use with radius_km | |
| limit | No | Page size (default 25, max 100) | |
| cursor | No | Opaque cursor from the previous page (next_cursor) | |
| country | No | ISO 3166-1 code canonical (CA); any spelling matches | |
| province | No | ISO 3166-2 code canonical (NS); any spelling matches | |
| audiences | No | ||
| entity_id | No | Programs this entity organizes, hosts or partners on | |
| frequency | No | ||
| radius_km | No | Radius around `near` (default 10, max 200) | |
| saved_map | No | A public saved map (share token or id): programs of the organizations on it | |
| categories | No | ||
| cost_models | No | ||
| access_models | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses useful behavior: only published items are searched, results are ordered by next date, pagination uses a cursor, and the date range is interpreted as [from, to). It does not describe authentication needs, rate limits, or response shape.
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 front-loaded with the search scope and then enumerates filters and ordering/pagination behavior. It is dense but efficient, though the long middle sentence packs many parameters together.
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 20-parameter search tool with no annotations and no output schema, the description gives a strong overview of searchable content, filters, ordering, and pagination. It still leaves some gaps around returned fields, authorization, and how detail siblings should be used.
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 description groups and names most filter dimensions: text, organizer entity, saved map, area, kind, categories, audiences, access/cost models, frequency, and date range. It adds semantic detail like area modes and the date interval boundary, which goes beyond the 75%-covered 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 states a specific verb and resource set: search published community food programs, events, volunteer roles and jobs. It is clear what the tool does, but it does not explicitly differentiate itself from siblings like get_program or list_program_occurrences.
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?
Usage is implied for filtered discovery, and it notes the same filters as GET /v1/programs. However, it gives no explicit guidance on when to use this instead of get_program, list_program_occurrences, or search_entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiWho am IAInspect
Your authentication status on the Food Web MCP server: method (OAuth sign-in, fw_ API key, Firebase ID token, or anonymous), the connected app, account, roles, which tool tiers this unlocks, and your remaining rate-limit budget. Anonymous callers get public map + forum reads; sign up at api.foodweb.network to mint an API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 auth methods, returned identity fields, tool-tier implications, rate-limit budget, and anonymous access behavior, though it does not state whether calling whoami itself consumes rate limit.
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 followed by anonymous-access guidance. The field list is dense but every item is relevant.
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?
No output schema exists, so the description must explain return values; it enumerates method, connected app, account, roles, tool tiers, and rate-limit budget. It also explains anonymous limitations and signup, making it complete for a zero-parameter auth introspection tool.
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 the baseline is 4. The description adds no parameter details because none exist, and the empty schema is fully covered.
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?
States a specific resource, authentication status on the Food Web MCP server, and enumerates the returned fields. This clearly distinguishes it from the data-retrieval 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?
Gives clear context for anonymous callers and the signup path to obtain an API key. It does not explicitly say when to call whoami, such as before restricted tools or after auth errors, but usage is strongly implied by the tool's nature.
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.
10 tool updates
- First observed
forum_get_discussion - First observed
forum_list_categories - First observed
forum_list_discussions - First observed
get_entity - First observed
get_program - First observed
list_cities - First observed
list_program_occurrences - First observed
search_entities - First observed
search_programs - First observed
whoami
Publisher details
- Operator
- Keegan Francis · Publisher source
- Operator website
- https://foodweb.network · Publisher source
- Vendor relationship
- Unknown
- Documentation
- https://api.foodweb.network · Publisher source
- Trust center
- Unknown
- Restrictions
- Unknown
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1618 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.