Skip to main content
Glama

submit_and_pay_job_from_file

Submit and pay for a job with input read from a local file, enabling large or binary data like images or logs. The file travels peer-to-peer, keeping content out of model output.

Instructions

Same as submit_and_pay_job, but the job input is read from a file on disk by the MCP server instead of being passed inline by the LLM. Use this when the input is large or binary (images, logs, captured output) and the LLM only needs to forward it - the file content never enters the model's output tokens. input_path may be absolute or relative to the MCP server's working directory. The file is ALWAYS transferred peer-to-peer via iroh, so this needs: a persistent agent, a PAID provider skill (free skills reject file inputs), and the iroh addon. Text files reach the skill on stdin; binary files via ELISYM_INPUT_FILE. Pass an optional prompt to send a text instruction alongside the file (e.g. how to edit an image); it rides inline (encrypted) while the file rides P2P. This pays the listed price up front; when the capability advertises delegation, use submit_delegated_job_from_file so a metered card bills only actual usage.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
promptNoOptional text instruction sent alongside the file (e.g. how to edit an image: "make it night", "add a hat"). It rides inline (NIP-44 encrypted) in the job event while the file travels peer-to-peer via iroh. The single attachment slot holds the file, so the prompt cannot spill to a second transfer - keep it short.
capabilityNogeneral
input_pathYesPath to a regular file whose contents become the job input. Absolute or relative to the MCP server's working directory.
session_idNoConversation control. Omit for automatic session management (providers advertising context support get a conversation auto-started on first contact; an ongoing conversation triggers a continue/new/one-off question before anything is published). Pass "new" to force a fresh conversation, "none" to force a stateless one-off, or a session_id from a previous result to continue that conversation. The provider answers with the conversation context of prior exchanges under the same id.
kind_offsetNo
timeout_secsNo
provider_npubYes
allow_outside_cwdNoAllow reading a file outside the MCP server working directory. Off by default - the file content is forwarded to the provider before payment and is invisible in the transcript, so reads are confined to the working dir unless this is set. Sensitive files (secret keys, .env, SSH/keypair, ~/.elisym, /proc) are always refused.
max_price_lamportsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.1.42
    • addedInput schema / properties / prompt
      Added value: +{
      +  "default": "",
      +  "description": "Optional text instruction sent alongside the file (e.g. how to edit an image: \"make it night\", \"add a hat\"). It rides inline (NIP-44 encrypted) in the job event while the file travels peer-to-peer via iroh. The single attachment slot holds the file, so the prompt cannot spill to a second transfer - keep it short.",
      +  "maxLength": 100000,
      +  "type": "string"
      +}
    • addedInput schema / properties / session_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "const": "new",
      +      "type": "string"
      +    },
      +    {
      +      "const": "none",
      +      "type": "string"
      +    },
      +    {
      +      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
      +      "type": "string"
      +    }
      +  ],
      +  "description": "Conversation control. Omit for automatic session management (providers advertising context support get a conversation auto-started on first contact; an ongoing conversation triggers a continue/new/one-off question before anything is published). Pass \"new\" to force a fresh conversation, \"none\" to force a stateless one-off, or a session_id from a previous result to continue that conversation. The provider answers with the conversation context of prior exchanges under the same id."
      +}
  2. Addedv0.1.37
  3. Removedv0.1.36
  4. Addedv0.1.2

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the full behavioral burden and does substantial work: the file is ALWAYS transferred peer-to-peer via iroh, text vs binary delivery is disclosed (stdin vs ELISYM_INPUT_FILE), the prompt rides inline encrypted, payment is up front, and the prerequisites are explicit. It stops short of explaining what is returned or what happens on failure/refund, so it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the definition and when-to-use guidance, and every sentence carries a distinct piece of information. The only redundancy is the P2P point stated twice ('ALWAYS transferred peer-to-peer via iroh' and 'while the file rides P2P'); otherwise the length is justified by the density of unique behavioral content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex paid submission tool with no annotations and no output schema, the description is unusually complete: it covers prerequisites, transfer mechanics, file-delivery modes, payment model, and alternative routing. The remaining gaps are the lack of any statement about the return value/result surface and five unexplained housekeeping parameters, which keeps it below a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 44%, so the description is expected to compensate for undocumented parameters. It adds genuine meaning for input_path (file content never enters model output tokens; text vs binary handling) and prompt (inline encrypted, kept short), but the five schema-undocumented parameters (capability, kind_offset, timeout_secs, provider_npub, max_price_lamports) receive no clarifying help from the main description either. This is partial, not full, compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens by anchoring to submit_and_pay_job then states the differentiator: input is read from a file on disk by the MCP server rather than passed inline by the LLM. The verb+resource (submit-and-pay a job from a file) is unmistakable, and it explicitly distinguishes itself from both submit_and_pay_job and submit_delegated_job_from_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the exact condition for choosing this tool ('Use this when the input is large or binary...') and gives a when-not signal by listing prerequisites (persistent agent, paid provider skill, iroh addon; free skills reject file inputs). The final sentence explicitly routes to submit_delegated_job_from_file when delegation is advertised, which is a clear alternative-selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.