Drupal as a 3-tier system model
You could use Organic groups.  

In that case, every agency would be a group with a group administrator that could set the users that are part of that agency. Every agency could have its own content, which would be created from the users that are associated with the agency. A user of another agency would not be able to create content for another agency, if not in the case the user is member of both the agencies.