How do I make an object available as a token?
Yes, by making your token a dynamic token in HOOK_token_info() and using the provided name during HOOK_tokens() to dynamically create your replacements.

Example

function HOOK_token_info() {
  ...

  $tokens['mycustomtoken'] = array(
     ...
     'dynamic' =&gt; TRUE,
  );

  ...
}

function HOOK_tokens($type, $tokens, array $data = array(), array $options = array()) {
  ...

  if ($type == 'mycustomtoken' &amp;&amp; !empty($data['node'])) {
    $node = $data['node'];

    foreach ($tokens as $name =&gt; $original) {
      if (isset($node-&gt;{$name})) {
        $replacements[$original] = $node-&gt;{$name};
      }
    }
  }

  ...
}