(1) and (3) are easy, by setting the container’s $OnAdd to
$Prototype="protoMe";linkTo(parent,"Clunk");
or whatever looks like that.
However “Inherit all metadata/attributes from the parent container ‘reference’;” needs explanation from you. In theory, hundreds of attributes could be “inherited” – so “all” cannot be the requirement, really.
But, “inheritance” or assignment of “some” or “specific” parent attribute values to a child is not difficult. For example, if you want an attribute of the child to be assigned the value of the parent (or another note’s) specific attribute you can use additional $OnAdd actions such as
$Name(this)=$Name(parent)
but be very careful not to set off a chain of unintended consequences.
Another few approaches, that do not require adding notes to container, when you want to facilitate linking notes (e.g., your annotations) to source documents (e.g., a note representing your PDF), is to use stamps, or to use smart adornments.
**Stamps:**You could have a stamp for each source document and when you use the stamp against annotation notes the stamp could set up the proper linkTo()
relationships and attribute inheritance.
Smart Adornments: The smart adornment approach does the same but in this case it is an adornment on a map that represents the document and dropping notes on the adornment triggers the adornment’s $OnAdd actions to set links, etc.
Agents: And, finally, you could use agents to find annotations according to specific queries and allocate the found notes to source documents and create the links.
Extra Credit
Here’s a tip that works with your dragged-in DEVONthink notes. If you keep your annotations for a PDF in a group in your DEVONthink database, and that group is named after the title of your document:
The Story of Mars and Belinda
--- Note 1
--- Note 2
and in DEVONthink you have enabled tagging for the group “The Story of Mars and Belinda”, then each of “Note 1” and “Note 2” will have tags in DEVONthink with the group’s name.
When you drag those two notes into Tinderbox, then the set attribute $Tags
is automatically loaded with a tag The Story of Mars and Belinda
, viz.:

and you can use an agent that queries $Tags
for that value to locate the relevant notes for your document named “The Story of Mars and Belinda”.
Your agent can also throw the notes into the container that started this thread, by setting $Container()
for them.