Server definition
- Hash
- sha256:42a415dc4d9fb43c561a1fee58a03eb0308019acdf0386147ce166b4a7f32ff0
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "This server exposes read-only access to the Basic Meeting List Toolbox (BMLT) — the\ndirectory of Narcotics Anonymous meetings. Tools query a configured BMLT root\nserver (or any root that the deployment allowlists via root_server_url).\n\nSuggested flow for \"find me a meeting\" queries:\n\n1. If the user names a region, call list_service_bodies first to map names → IDs.\n2. If the user wants a format filter (e.g. \"open speaker meetings\"), call\n list_formats to map names → IDs.\n3. Call search_meetings with either an address (geocoded server-side) or\n latitude/longitude + radius_miles, plus any filters from steps 1-2.\n4. For deeper detail on a single meeting, call get_meeting with its id_bigint.\n\nUse list_root_servers if the user asks about a server you do not have\nconfigured (the BMLT aggregator publishes a directory of public roots).",
"tools": [
{
"description": "Fetch the full record for a single meeting by its BMLT id_bigint.",
"inputSchema": {
"properties": {
"id": {
"description": "BMLT meeting id_bigint.",
"type": "integer"
},
"root_server_url": {
"description": "Override the configured BMLT root server URL.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_meeting",
"outputSchema": null
},
{
"description": "Return capabilities, version, languages, and default coordinates for a BMLT root server.",
"inputSchema": {
"properties": {
"root_server_url": {
"description": "Override the configured BMLT root server URL.",
"type": "string"
}
},
"type": "object"
},
"name": "get_server_info",
"outputSchema": null
},
{
"description": "List available meeting formats (Open, Closed, Speaker, Beginners, language tags, etc.) so the caller can map human-friendly format names to BMLT format IDs.",
"inputSchema": {
"properties": {
"format_ids": {
"description": "Restrict to specific format IDs.",
"items": {
"type": "integer"
},
"type": "array"
},
"include_unused": {
"default": false,
"description": "Include formats not currently assigned to any meeting. Default false.",
"type": "boolean"
},
"key_strings": {
"description": "Restrict to formats matching these short codes (e.g. [\"O\", \"C\", \"SP\"]).",
"items": {
"type": "string"
},
"type": "array"
},
"language": {
"description": "Language code for format names (e.g. \"en\", \"es\", \"fr\"). Defaults to server default.",
"type": "string"
},
"root_server_url": {
"description": "Override the configured BMLT root server URL.",
"type": "string"
}
},
"type": "object"
},
"name": "list_formats",
"outputSchema": null
},
{
"description": "List public BMLT root servers known to the BMLT aggregator. Use the returned root_server_url values with other tools to query a specific server.",
"inputSchema": {
"properties": {
"name_contains": {
"description": "Case-insensitive substring filter applied to the server name.",
"type": "string"
}
},
"type": "object"
},
"name": "list_root_servers",
"outputSchema": null
},
{
"description": "List BMLT service bodies (zones, regions, areas, groups). Useful for translating \"Northern California Region\" to a service body ID for use with search_meetings.",
"inputSchema": {
"properties": {
"include_children": {
"default": false,
"description": "Also include child service bodies of the requested IDs.",
"type": "boolean"
},
"include_parents": {
"default": false,
"description": "Also include parent service bodies of the requested IDs.",
"type": "boolean"
},
"root_server_url": {
"description": "Override the configured BMLT root server URL.",
"type": "string"
},
"service_body_ids": {
"description": "Restrict to specific service body IDs.",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "list_service_bodies",
"outputSchema": null
},
{
"description": "Search Narcotics Anonymous meetings on a BMLT root server. Filter by location (address or lat/lng + radius), weekday, time of day, format, venue type (in-person / virtual / hybrid), and service body. Returns a trimmed summary by default; pass data_format='full' for the raw BMLT response.",
"inputSchema": {
"properties": {
"address": {
"description": "Free-form address to search near (geocoded server-side). Ignored if latitude+longitude are provided.",
"type": "string"
},
"data_format": {
"default": "summary",
"description": "\"summary\" returns a curated subset of fields (default). \"full\" returns the raw BMLT response.",
"enum": [
"summary",
"full"
],
"type": "string"
},
"format_ids": {
"description": "BMLT format IDs to require. Use list_formats to discover IDs (e.g. Open, Closed, Speaker, Beginners).",
"items": {
"type": "integer"
},
"type": "array"
},
"language": {
"description": "Language code for format names (e.g. \"en\", \"es\", \"de\", \"fr\").",
"type": "string"
},
"latitude": {
"description": "Latitude in decimal degrees. Pair with longitude for an exact-coordinate search.",
"type": "number"
},
"longitude": {
"description": "Longitude in decimal degrees. Pair with latitude for an exact-coordinate search.",
"type": "number"
},
"page": {
"default": 1,
"description": "Page number (1-indexed). Used with page_size.",
"type": "integer"
},
"page_size": {
"description": "Results per page. Omit to return all matches.",
"type": "integer"
},
"radius_km": {
"description": "Search radius in kilometers. Takes precedence over radius_miles when both are provided. Ignored when no coordinates are provided.",
"type": "number"
},
"radius_miles": {
"default": 10,
"description": "Search radius in miles. Defaults to 10. Ignored if radius_km is provided or no coordinates are given.",
"type": "number"
},
"recursive_services": {
"default": true,
"description": "When service_body_ids is set, also include their children. Default true.",
"type": "boolean"
},
"root_server_url": {
"description": "Override the configured BMLT root server URL. Must be allowlisted unless BMLT_ALLOW_ANY_ROOT=true.",
"type": "string"
},
"search_text": {
"description": "Free-text search across meeting name, location, and notes.",
"type": "string"
},
"service_body_ids": {
"description": "Restrict to specific service bodies (regions/areas). Use list_service_bodies to discover IDs.",
"items": {
"type": "integer"
},
"type": "array"
},
"starts_after": {
"description": "Earliest start time as 24h \"HH:MM\" (e.g. \"18:00\").",
"type": "string"
},
"starts_before": {
"description": "Latest start time as 24h \"HH:MM\" (e.g. \"21:30\").",
"type": "string"
},
"venue_types": {
"description": "Venue type filter. 1=In-person, 2=Virtual, 3=Hybrid.",
"items": {
"type": "integer"
},
"type": "array"
},
"weekdays": {
"description": "Weekday filter. 1=Sunday, 2=Monday, ..., 7=Saturday. Example: [2,4,6] for Mon/Wed/Fri.",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "search_meetings",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:42a415dc4d9fb43c561a1fee58a03eb0308019acdf0386147ce166b4a7f32ff0 | sha256sum