Skip to main content
Glama
rossumai

Rossum MCP Server

Official
by rossumai

rossum_get_workspaces

Retrieve all workspaces from the Rossum organization for analysis and management purposes.

Instructions

Get all workspaces from the Rossum organization.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler function for the 'rossum_get_workspaces' tool. It is decorated with @mcp.tool() for registration and delegates the implementation to _get_workspaces_impl().
    @mcp.tool()
    async def rossum_get_workspaces() -> List[Dict[str, Any]]:
        """Get all workspaces from the Rossum organization."""
        return await _get_workspaces_impl()
  • Helper function that performs the actual API call to fetch all workspaces using the paginated request utility.
    async def _get_workspaces_impl() -> List[Dict[str, Any]]:
        """Get all workspaces, handling pagination."""
        # No summary_keys provided, so it will fetch all fields for each workspace.
        return await _rossum_unpaginated_request("GET", "/workspaces")
  • Core utility function for making paginated requests to the Rossum API, used by _get_workspaces_impl() to handle pagination transparently.
    async def _rossum_unpaginated_request(method: str, path: str, summary_keys: Optional[List[str]] = None) -> List[Dict[str, Any]]:
        """Make a request to the Rossum API, handling pagination and summarization."""
        all_items = []
        current_path = path
    
        while current_path:
            try:
                page_data = await _rossum_request(method, current_path)
            except Exception as e:
                # Log or handle error, for now re-raising.
                # Consider logging: print(f"Error fetching Rossum data from {current_path}: {e}")
                raise
    
            if page_data and "results" in page_data and isinstance(page_data.get("results"), list):
                for item in page_data["results"]:
                    if summary_keys:
                        summary_item = {key: item.get(key) for key in summary_keys if key in item}
                        all_items.append(summary_item)
                    else:
                        all_items.append(item)  # Append the full item if no summary_keys
            
            pagination_info = page_data.get("pagination") if page_data else None
            next_page_url = pagination_info.get("next") if pagination_info else None
            
            if next_page_url:
                if next_page_url.startswith(ROSSUM_API_BASE):
                    current_path = next_page_url[len(ROSSUM_API_BASE):]
                else:
                    # Consider logging: print(f"Warning: next_page_url {next_page_url} does not match ROSSUM_API_BASE")
                    current_path = None 
            else:
                current_path = None
    
        return all_items
  • Low-level HTTP request function to the Rossum API, handling errors and JSON parsing, used by the pagination helper.
    async def _rossum_request(method: str, path: str, **kwargs) -> Any:
        """Make a request to the Rossum API"""
        try:
            response = await client.request(
                method=method,
                url=f"{ROSSUM_API_BASE}{path}",
                headers=await get_rossum_headers(),
                **kwargs
            )
            response.raise_for_status()
            
            # Handle cases where Rossum might return empty body on success (e.g., 204)
            if response.status_code == 204:
                return None 
            return response.json()
        except httpx.HTTPStatusError as e:
            # Get error detail from response if possible
            error_detail = str(e)
            try:
                error_detail = e.response.json()
            except Exception:
                pass
            raise Exception(f"Rossum API error {e.response.status_code}: {error_detail}")
        except httpx.RequestError as e:
            raise Exception(f"Rossum API request failed: {str(e)}")

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rossumai/rossum-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server