Skip to main content
Glama

BinaPool corridors and seat prices

list_pool_corridors
Read-only

Lists BinaPool shared-commute corridors open now in Addis Ababa, showing stops, live seat prices, and cars filling, so riders can pick and join a route.

Instructions

BinaPool (ጋራ ጉዞ) is BinaSmart's shared commute in Addis Ababa: up to four riders share one Comfort car and pay per seat. Lists the corridors open right now (Megenagna → Bole, CMC → Bole, Megenagna → Kazanchis, Piassa → Kazanchis, Mexico → Kazanchis; inbound until 13:00 Addis time, outbound after) with their stops, the live seat-price ladder (1–4 riders) and cars currently filling. Riders join at https://bina.et/ride?pool=1.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
latNoRider latitude, to sort by distance
lngNoRider longitude

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoHow to use or present this result
peakNotrue during peak hours
join_urlNoWhere to join a pool
corridorsNoBinaPool corridors with live seat prices
directionNoCommute direction

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.1.2
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "corridors": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "carFareEtb": {
      +                "description": "Whole-car fare in birr",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "from": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": true,
      +                    "properties": {},
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "Start point"
      +              },
      +              "key": {
      +                "description": "Corridor id",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "leavesInS": {
      +                "description": "Seconds until the next car leaves",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "name": {
      +                "description": "Corridor name",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "nameAm": {
      +                "description": "Name in Amharic",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "seats": {
      +                "description": "Seats per car",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "to": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": true,
      +                    "properties": {},
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "End point"
      +              },
      +              "waiting": {
      +                "description": "Riders waiting",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "BinaPool corridors with live seat prices"
      +    },
      +    "direction": {
      +      "description": "Commute direction",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "join_url": {
      +      "description": "Where to join a pool",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "description": "How to use or present this result",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "peak": {
      +      "description": "true during peak hours",
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the listing is time-gated (inbound/outbound cutoffs), pricing is a live 1–4 rider ladder, and it surfaces "cars currently filling", which tells the agent the result is volatile rather than a static catalog.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense but well front-loaded sentence: the purpose verb lands first, then scope, timing rules, and the join URL. The Amharic brand gloss and corridor enumeration cost length but carry real orientation value; nothing is truly wasted, though it could be broken into two shorter sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape needn't be explained, and the description covers scope, time conditions, and pricing model. The one real gap is routing guidance against the ride/pool siblings, which is left to the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both lat/lng already have clear descriptions ("to sort by distance"), and the description adds nothing about them. Per the baseline rule for high-coverage schemas, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Lists") and resource (BinaPool commute corridors open right now) and enumerates the actual corridors (Megenagna → Bole, CMC → Bole, etc.), so the agent knows exactly what data comes back. The combination of shared-ride context and seat-price ladder is distinctive enough that no sibling in the catalog could be confused with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong situational context ("corridors open right now", inbound until 13:00 Addis time, outbound after) which implies when the listing is valid, but it never tells the agent when to pick this over the ride siblings such as quote_ride, request_ride, or find_pool_groups. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.