Tool tree
gradeNot graded
connect_to_robotAction
Set the rosbridge WebSocket URL and reconnect.
View tool JSON
{
"name": "connect_to_robot",
"kind": "act",
"impl": "imperative",
"description": "Set the rosbridge WebSocket URL and reconnect.",
"inputSchema": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "rosbridge host IP or hostname",
"default": "127.0.0.1"
},
"port": {
"type": "number",
"description": "rosbridge port",
"default": 9090
}
},
"required": [
"ip",
"port"
]
},
"page": "/ros-mcp/"
}get_topicsAnswer
List all ROS topics.
View tool JSON
{
"name": "get_topics",
"kind": "answer",
"impl": "imperative",
"description": "List all ROS topics.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ros-mcp/"
}get_topic_typeAnswer
Get the message type for a ROS topic.
View tool JSON
{
"name": "get_topic_type",
"kind": "answer",
"impl": "imperative",
"description": "Get the message type for a ROS topic.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "Full topic name, e.g. /turtle1/cmd_vel"
}
},
"required": [
"topic"
]
},
"page": "/ros-mcp/"
}get_topic_detailsAnswer
Get publishers, subscribers, and type for a topic.
View tool JSON
{
"name": "get_topic_details",
"kind": "answer",
"impl": "imperative",
"description": "Get publishers, subscribers, and type for a topic.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string"
}
},
"required": [
"topic"
]
},
"page": "/ros-mcp/"
}subscribe_onceSensitive Action
Subscribe to a topic and return the first message received.
View tool JSON
{
"name": "subscribe_once",
"kind": "transact",
"impl": "imperative",
"description": "Subscribe to a topic and return the first message received.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string"
},
"msg_type": {
"type": "string",
"description": "ROS message type, e.g. turtlesim/msg/Pose"
},
"timeout": {
"type": "number",
"description": "Timeout in seconds (default 5)",
"default": 5
}
},
"required": [
"topic",
"msg_type"
]
},
"page": "/ros-mcp/"
}subscribe_for_durationSensitive Action
Subscribe to a topic and collect messages for a given duration.
View tool JSON
{
"name": "subscribe_for_duration",
"kind": "transact",
"impl": "imperative",
"description": "Subscribe to a topic and collect messages for a given duration.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string"
},
"msg_type": {
"type": "string"
},
"duration": {
"type": "number",
"description": "Duration in seconds"
},
"max_messages": {
"type": "number",
"description": "Stop after this many messages",
"default": 100
}
},
"required": [
"topic",
"msg_type",
"duration"
]
},
"page": "/ros-mcp/"
}publish_onceAction
Publish a single message to a topic.
View tool JSON
{
"name": "publish_once",
"kind": "act",
"impl": "imperative",
"description": "Publish a single message to a topic.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string"
},
"msg_type": {
"type": "string"
},
"msg": {
"type": "object",
"description": "Message payload as JSON object"
}
},
"required": [
"topic",
"msg_type",
"msg"
]
},
"page": "/ros-mcp/"
}publish_for_durationsAction
Publish a sequence of messages with delays between each.
View tool JSON
{
"name": "publish_for_durations",
"kind": "act",
"impl": "imperative",
"description": "Publish a sequence of messages with delays between each.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string"
},
"msg_type": {
"type": "string"
},
"messages": {
"type": "array",
"items": {
"type": "object"
},
"description": "Array of message payloads"
},
"durations": {
"type": "array",
"items": {
"type": "number"
},
"description": "Delay in seconds after each message"
}
},
"required": [
"topic",
"msg_type",
"messages",
"durations"
]
},
"page": "/ros-mcp/"
}turn_by_angleAction
Rotate a robot in place by an angle in degrees. Computes duration = (|angle_deg| x pi/180) / angular_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for rotation — it removes the error-prone duration maths from the caller. Positive angle_deg = counter-clockwise, negative = clockwise. Units: angle_deg in degrees, angular_velocity in rad/s. Example — turn turtle1 90 degrees counter-clockwise at 1.0 rad/s: turn_by_angle(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', angle_deg=90)
View tool JSON
{
"name": "turn_by_angle",
"kind": "act",
"impl": "imperative",
"description": "Rotate a robot in place by an angle in degrees. Computes duration = (|angle_deg| x pi/180) / angular_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for rotation — it removes the error-prone duration maths from the caller. Positive angle_deg = counter-clockwise, negative = clockwise. Units: angle_deg in degrees, angular_velocity in rad/s.\nExample — turn turtle1 90 degrees counter-clockwise at 1.0 rad/s:\nturn_by_angle(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', angle_deg=90)",
"inputSchema": {
"type": "object",
"properties": {
"cmd_vel_topic": {
"type": "string",
"description": "e.g. /ts1/turtle1/cmd_vel"
},
"msg_type": {
"type": "string",
"description": "e.g. geometry_msgs/Twist"
},
"angle_deg": {
"type": "number",
"description": "Degrees; positive = counter-clockwise"
},
"angular_velocity": {
"type": "number",
"description": "rad/s, must be > 0",
"default": 1
}
},
"required": [
"cmd_vel_topic",
"msg_type",
"angle_deg"
]
},
"page": "/ros-mcp/"
}move_by_distanceAction
Move a robot forward or backward by a distance in metres. Computes duration = |distance_m| / linear_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for straight-line motion. Positive distance_m = forward, negative = backward. Units: distance_m in metres, linear_velocity in m/s. Example — move turtle1 forward 1 metre at 0.5 m/s: move_by_distance(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', distance_m=1.0)
View tool JSON
{
"name": "move_by_distance",
"kind": "act",
"impl": "imperative",
"description": "Move a robot forward or backward by a distance in metres. Computes duration = |distance_m| / linear_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for straight-line motion. Positive distance_m = forward, negative = backward. Units: distance_m in metres, linear_velocity in m/s.\nExample — move turtle1 forward 1 metre at 0.5 m/s:\nmove_by_distance(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', distance_m=1.0)",
"inputSchema": {
"type": "object",
"properties": {
"cmd_vel_topic": {
"type": "string",
"description": "e.g. /ts1/turtle1/cmd_vel"
},
"msg_type": {
"type": "string",
"description": "e.g. geometry_msgs/Twist"
},
"distance_m": {
"type": "number",
"description": "Metres; positive = forward"
},
"linear_velocity": {
"type": "number",
"description": "m/s, must be > 0",
"default": 0.5
}
},
"required": [
"cmd_vel_topic",
"msg_type",
"distance_m"
]
},
"page": "/ros-mcp/"
}get_servicesAnswer
List all available ROS services.
View tool JSON
{
"name": "get_services",
"kind": "answer",
"impl": "imperative",
"description": "List all available ROS services.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ros-mcp/"
}get_service_detailsAnswer
Get the request/response type and provider node for a service.
View tool JSON
{
"name": "get_service_details",
"kind": "answer",
"impl": "imperative",
"description": "Get the request/response type and provider node for a service.",
"inputSchema": {
"type": "object",
"properties": {
"service": {
"type": "string"
}
},
"required": [
"service"
]
},
"page": "/ros-mcp/"
}call_serviceAction
Call a ROS service with a request payload.
View tool JSON
{
"name": "call_service",
"kind": "act",
"impl": "imperative",
"description": "Call a ROS service with a request payload.",
"inputSchema": {
"type": "object",
"properties": {
"service_name": {
"type": "string"
},
"service_type": {
"type": "string"
},
"request": {
"type": "object",
"description": "Request payload as JSON object"
}
},
"required": [
"service_name",
"service_type",
"request"
]
},
"page": "/ros-mcp/"
}get_nodesAnswer
List all running ROS nodes.
View tool JSON
{
"name": "get_nodes",
"kind": "answer",
"impl": "imperative",
"description": "List all running ROS nodes.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ros-mcp/"
}get_node_detailsAnswer
Get publishers, subscribers, and services for a node.
View tool JSON
{
"name": "get_node_details",
"kind": "answer",
"impl": "imperative",
"description": "Get publishers, subscribers, and services for a node.",
"inputSchema": {
"type": "object",
"properties": {
"node": {
"type": "string"
}
},
"required": [
"node"
]
},
"page": "/ros-mcp/"
}get_connected_robotsAnswer
Detect connected robots by finding active cmd_vel topics on the ROS network. Works with any robot — no hardcoded names. Returns the cmd_vel topic and message type for each robot. Call this when you need to discover robot topics before issuing motion commands.
View tool JSON
{
"name": "get_connected_robots",
"kind": "answer",
"impl": "imperative",
"description": "Detect connected robots by finding active cmd_vel topics on the ROS network. Works with any robot — no hardcoded names. Returns the cmd_vel topic and message type for each robot. Call this when you need to discover robot topics before issuing motion commands.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ros-mcp/"
}move_robotsAction
Move multiple robots simultaneously. All start and stop at the same time. Use get_connected_robots() first to get topics and message types. Each robot entry needs: cmd_vel_topic, msg_type, and linear_x and/or angular_z.
View tool JSON
{
"name": "move_robots",
"kind": "act",
"impl": "imperative",
"description": "Move multiple robots simultaneously. All start and stop at the same time. Use get_connected_robots() first to get topics and message types. Each robot entry needs: cmd_vel_topic, msg_type, and linear_x and/or angular_z.",
"inputSchema": {
"type": "object",
"properties": {
"robots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"cmd_vel_topic": {
"type": "string"
},
"msg_type": {
"type": "string"
},
"linear_x": {
"type": "number",
"default": 0
},
"angular_z": {
"type": "number",
"default": 0
}
},
"required": [
"cmd_vel_topic",
"msg_type"
]
}
},
"duration": {
"type": "number",
"description": "Duration in seconds",
"default": 2
}
},
"required": [
"robots"
]
},
"page": "/ros-mcp/"
}get_robot_descriptionAnswer
Fetch the robot's URDF from the /robot_description ROS parameter. Requires robot_state_publisher to be running.
View tool JSON
{
"name": "get_robot_description",
"kind": "answer",
"impl": "imperative",
"description": "Fetch the robot's URDF from the /robot_description ROS parameter. Requires robot_state_publisher to be running.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ros-mcp/"
}get_joint_statesAnswer
Read current joint positions (rad), velocities (rad/s), and efforts (N·m) from /joint_states.
View tool JSON
{
"name": "get_joint_states",
"kind": "answer",
"impl": "imperative",
"description": "Read current joint positions (rad), velocities (rad/s), and efforts (N·m) from /joint_states.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "Joint states topic (default: /joint_states)",
"default": "/joint_states"
},
"timeout": {
"type": "number",
"description": "Timeout in seconds (default 5)",
"default": 5
}
}
},
"page": "/ros-mcp/"
}